Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel雄辩-按孩子的特定ID排序_Php_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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