Laravel scout algolia геопоиск

Я пытаюсь сделать запрос к моему индексу алголии с параметрами геопоиска. Мой запрос работает, пока я не добавлю whereDate и все параметры where после поиска.

Подскажите, пожалуйста, как правильно оформить запрос?

Спасибо

return Event::search('', function ($algolia, $query, $options) use ($lat, $lng, $radius){
            $location = [
              'aroundLatLng' => $lat.','.$lng,
              'aroundRadius' => $radius * 1000,
            ];

            $options = array_merge($options, $location);

            return $algolia->search($query, $options);
        })->whereDate('start_at', \Carbon\Carbon::parse($day))->where('end_at', '>=',
          \Carbon\Carbon::parse($day))->orWhere('start_at', '<=', \Carbon\Carbon::parse($day))->where('end_at',
          '>=', \Carbon\Carbon::parse($day))->orderBy('events.start_at')->orderBy('events.start_at')->get();

person BigSnowfr    schedule 10.11.2017    source источник


Ответы (1)


Я думаю, что лучшим способом было бы добавить оператор where и в Algolia. Laravel Scout обрабатывает только простые предложения where (только = числовое).

    return Event::search('', function ($algolia, $query, $options) use ($lat, $lng, $radius){
        $custom = [
          'aroundLatLng' => $lat.','.$lng,
          'aroundRadius' => $radius * 1000,
          'filters' => 'start_at>12 AND end_at<16',
        ];

        $options = array_merge($options, $custom);

        return $algolia->search($query, $options);
    })->get();

Вы можете найти документацию по фильтрам здесь: https://www.algolia.com/doc/guides/searching/filtering/

person Julien Bourdeau    schedule 10.11.2017