Php Laravel雄辩-按孩子的特定ID排序
我有三种型号:Php Laravel雄辩-按孩子的特定ID排序,php,laravel,laravel-4,eloquent,Php,Laravel,Laravel 4,Eloquent,我有三种型号:Schedule、Shift和User。一个计划有许多班次,每个班次都属于一个计划,并且有一个用户 为了获得我的时间表(包括班次和用户),我使用: 我想按特定用户id订购此计划-即,如果您正在查看计划,我希望您的班次是计划中的第一个班次 我能在网上找到的只是如何使用orderByRaw() 我试图将其放入with语句的$query中,但没有成功: Schedule::with( [ 'shifts', 'shifts.user' =>
Schedule
、Shift
和User
。一个计划
有许多班次
,每个班次
都属于一个计划
,并且有一个用户
为了获得我的时间表(包括班次和用户),我使用:
我想按特定用户id
订购此计划-即,如果您正在查看计划,我希望您的班次是计划中的第一个班次
我能在网上找到的只是如何使用orderByRaw()
我试图将其放入with
语句的$query
中,但没有成功:
Schedule::with(
[
'shifts',
'shifts.user' => function($query) use ($user_id)
{
$query->orderByRaw(DB::raw("FIELD(id, $user_id)"));
}
])->find($id);
有什么想法吗?一个
用户
是否有一个时间表
?如果你加上这个关系,这会容易得多。不,不幸的是没有。每一天都有一个时间表,每个人都有班次。因此,每天的日程安排都属于用户
。据我所知,您不能这样做,但可以使用join
,然后orderby
with
对每个关系运行另一个查询,这样您就不能按相关表对其进行排序。使用联接
或对查询结果中得到的集合进行排序。
User::orderByRaw(DB::raw("FIELD(id, $user_id)"));
Schedule::with(
[
'shifts',
'shifts.user' => function($query) use ($user_id)
{
$query->orderByRaw(DB::raw("FIELD(id, $user_id)"));
}
])->find($id);