订购与Laravel中的表相关

时间:2015-04-07 18:26:23

标签: php laravel laravel-4 eloquent

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

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

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

我所做的近似值如下:按car_id排序(然后自行车排在第一位),但顺序始终相同,我需要在每个组中添加随机因素。

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

1 个答案:

答案 0 :(得分:1)

Union应该有效:

$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);

详细了解order when using union