Я использую Алголию с Laravel для своего поиска.Это работает нормально, но когда я добавил геолокации, я столкнулся с проблемой.У меня есть поля в БД для lat и lng, поэтому я добавил это в модель:
public function toSearchableArray()
{
$record = $this->toArray();
$record['_geoloc'] = [
'lat' => $record['latitude'],
'lng' => $record['longitude'],
];
unset($record['created_at'], $record['updated_at']); // Remove unrelevant data
unset($record['latitude'], $record['longitude']);
return $record;
}
Однако, когда я попытался сохранить модель, я получил эту ошибку:
Атрибуты _geoloc.lat или _geoloc.lng не могут быть нулевыми рядом со строкой: 1> столбец: 526
Итак, я добавил поле _geoloc в БД, которое было ТЕКСТОМ.Но теперь я получаю эту ошибку при попытке сохранить мою модель:
Атрибут AlgoliaSearch \ AlgoliaException (400) _geoloc не может содержать строку рядом со строкой: 1 столбец: 606
Из сообщения об ошибке:
$ answer = Json :: decode ($ response, true);
if (intval($http_status / 100) == 4) {
throw new AlgoliaException(isset($answer['message']) ? > $answer['message'] : $http_status.' error', $http_status);
Вот сохранение модели:
//gets an array of lat and lng
//$gps is an assoc array
//logger($geoJson) yields {"lat":34.8802845,"lng":-77.1041536}
$gps = Map::getListingDetails($request);
$geoJson = json_encode($gps);
$listing = Listing::create([
'user_id' => auth()->id(),
'_geoloc' => $gps,
]);
Я делаю что-то не так с самого начала или в конце?С toSearchAbleArray, разве код Алголии не сможет декодировать строку json, сохраненную в БД?Заранее спасибо!