如果我这样做,
Booking::query()->with('vehicle')
Laravel生成两个查询:
select * from `bookings`
select * from `vehicles` where `vehicles`.`id` in (?, ?, ?, ?, ?, ?, ?, ?)
我可以告诉Laravel改为LEFT JOIN
,以便我可以在orderBy
上vehicles.name
吗?每个预订只有一辆车,所以它不会产生任何额外的记录。
我知道我可以改为DB::table('booking')->leftJoin
,但它并没有填充我的模型。
答案 0 :(得分:1)
你可以做两件事。首先是将您的查询更改为:
Booking::leftJoin('vehicle', 'vehicle.booking_id', '=', 'booking.id')->get(); // or whatever your fields are
另一种是在获得结果后对集合进行排序。文档中有一个很好的例子。请在此处查看:http://laravel.com/docs/eloquent#collections 希望有所帮助