LARAVEL столбец Красноречивый запрос с OrderByRaw - PullRequest
0 голосов
/ 16 июня 2020

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

  ->with(['foglio' => function ($query) use ($latitude, $longitude) {
    $query->select([
      'id',
      'indirizzo',
      'piano',
      'categoria',
      'consistenza',
      'latitude',
      'longitude',
    ]);
    $query->WhereNotNull(['indirizzo', 'latitude', 'longitude']);
  }])
  ->limit($limit)
  ->orderBy(DB::raw('ABS(latitude - ' . $latitude . ') + ABS(longitude - ' . $longitude . ')'), 'ASC')
  ->get();

Ответы [ 2 ]

0 голосов
/ 17 июня 2020

Вы должны использовать left join , а не eager loading . При активной загрузке будет создано два отдельных запроса, поэтому вы не можете получить доступ к столбцу широты в порядке следования.

0 голосов
/ 16 июня 2020

Вы можете использовать:

-> orderByRaw ('ABS (latitude -'. $ Latitude. ') + ABS (longitude -'. $ Longitude. ') AS C')

...