按Laravel中的相关表格排序


Ordering by related to table in Laravel

我有一个与其他两个型号(汽车和自行车)相关的型号(车辆)。汽车属于车辆和自行车。一辆车只有一辆汽车或一辆自行车。

我想对我所有的车辆进行随机排序,先是自行车,然后是汽车。我的意思是,首先所有的汽车都随机订购,然后所有的自行车都随机订购。

我必须以分页的方式执行此操作,因此必须在单个查询中执行。

我所做的近似如下:按car_id排序(然后自行车优先),但顺序总是相同的,我需要在每组中添加随机因子。

任何提示都会有所帮助。谢谢

工会应该工作:

$cars = Vehicle::selectRaw('*, 1 as ob')->whereNotNull('car_id');
$bikes = Vehicle::selectRaw('*, 2 as ob')->whereNotNull('bike_id');
$vehicles = $cars->union($bikes)->orderByRaw('ob, RAND()')->paginate(10);

阅读有关使用并集时的顺序的更多信息。