更新
paginate()
を使用する場合 クエリを使用すると、laravelは次のSQLコードを実行して、一致する可能性のある総数をカウントしようとします。
select count(*) as aggregate
from `vehicles` inner join `dealers`
on `vehicles`.`dealer_id` = `dealers`.`id`
having distance < 200
ご覧のとおり、そのような列やエイリアスのdistance
はありません。 このクエリで。
オプション2 私の元の答えでは、その問題も修正されます。
元の回答
これは、MySQL-strict-modeの問題であると考えられます。 laravel 5.3を使用する場合、デフォルトで厳密モードが有効になっています。 2つのオプションがあります:
オプション1:config/database.php
でMySQLの厳密モードを無効にする
...
'mysql' => [
...
'strict' => false,
...
],
...
オプション2:WHERE条件を使用する
Vehicle::join('dealers', 'vehicles.dealer_id', '=', 'dealers.id')
->select(DB::raw("dealers.id, ( cos( radians(latitude) ) * cos( radians( longitude ) ) ) AS distance"))
->whereRaw('cos( radians(latitude) ) * cos( radians( longitude ) ) < 200');
ドキュメント: