Строка запроса с Laravel - PullRequest
0 голосов
/ 03 октября 2018

У меня проблема со строкой запроса в Laravel 5.6

У меня есть эти две сущности, схема ER: ER Schema

и связанная модель: Модель заметки Модель местоположения

Моя проблема заключается в том, что мне нужно выбрать все заметки в определенном месте, передавая в качестве параметров строки запроса широту и долготу.

AСтрока запроса может быть:

homestead.test/api/notes?lat=45.5432&long=43.6543&max_distance=1.1

Я пытаюсь создать запрос Здесь код NoteController , но есть проблема:

На самом деле вывод показывает мне каждую заметку,Это вывод почтальона , и в дополнение к заметкам в нужном месте я также возвращаю заметки с location = null.Чтобы увидеть в базе данных, эти заметки имеют только один параметр, который совпадает с параметрами, переданными в строке запроса.Теоретически это не должно их возвращать, и я никак не могу их снять.кто-нибудь может мне помочь?

Надеюсь, я достаточно ясно, заранее спасибо

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Если это может кому-то помочь, я решил проблему таким образом.

public function index(Request $request) {

    if($request->has('lat') &&
        $request->has('long')) {

        $lat1 = $request->query('lat');
        $long1 = $request->query('long');
        $max_distance = $request->query('max_distance');

        $notes = Note::All();

        foreach ($notes as $key => $value) {

            if($value->location != null) {
                $lat2 = $value->location->latitude;
                $long2 = $value->location->longitude;
                $distance = sqrt(pow($lat2-$lat1, 2) + pow($long2-$long1, 2));

                if($distance > $max_distance) {
                    $notes->forget($key);
                }    
            } else {
                $notes->forget($key);
            }

        }

        return $notes;
    }
    return Note::All();
0 голосов
/ 03 октября 2018
Node::with(['location' => function($query) use ($latitude, $longitude){
    $query->where('latitude', $latitude);
    $query->where('longitude', $longitude);
}])->get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...