Saya mencoba membuat permintaan ke indeks algolia saya dengan parameter geoSearch. Kueri saya berfungsi hingga saya menambahkan whereDate dan semua parameter where setelah pencarian.

Bisakah Anda memberi tahu saya bagaimana melakukan permintaan dengan benar?

Terima kasih

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();
0
BigSnowfr 10 November 2017, 17:44

1 menjawab

Jawaban Terbaik

Saya pikir cara terbaik adalah menambahkan pernyataan where di Algolia juga. Laravel Scout hanya menangani klausa where sederhana (hanya = ke numerik).

    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();

Anda dapat menemukan dokumentasi terkait filter di sini: https://www.algolia.com /doc/guides/searching/filtering/

0
Julien Bourdeau 10 November 2017, 15:14