Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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 从具有查询约束的关系中检索记录_Php_Laravel_Collections_Eloquent - Fatal编程技术网

Php 从具有查询约束的关系中检索记录

Php 从具有查询约束的关系中检索记录,php,laravel,collections,eloquent,Php,Laravel,Collections,Eloquent,我正在尝试从我的订单表中检索所有记录,其中订单与主管关联订单和主管与隶属关系关联,并具有透视表 因此,我的代码如下所示: $supervisor = User::where('phone_number', $request->msisdn)->first(); $orders = Order::with(['supervisors' => function ($query) { $query->where('supe

我正在尝试从我的
订单
表中检索所有记录,其中订单与
主管
关联<代码>订单和
主管
隶属关系关联,并具有透视表

因此,我的代码如下所示:

$supervisor = User::where('phone_number', $request->msisdn)->first();
            $orders = Order::with(['supervisors' => function ($query) {
                $query->where('supervisor_id', $supervisor->id);
            }])->get();
我希望得到一组订单,然后将其传递给通知,但得到的是:

[2017-12-12 14:25:27] local.ERROR: Undefined variable: supervisor   

{"exception":"[object] (ErrorException(code: 0): Undefined variable: supervisor 

不确定我做错了什么?

您需要使用将$supervisor传递到函数中

$orders = Order::with(['supervisors' => function ($query) use($supervisor) {
                $query->where('supervisor_id', $supervisor->id);
            }])->get();

您需要使用将$supervisor传递到函数中

$orders = Order::with(['supervisors' => function ($query) use($supervisor) {
                $query->where('supervisor_id', $supervisor->id);
            }])->get();

对于那些在谷歌上搜索类似内容的人,我使用了这个,它起了作用:

$supervisor = User::where('phone_number', $request->msisdn)->first();
            $orders = Order::whereHas('supervisors', function ($query) use($supervisor) { 
                $query->where('supervisor_id', $supervisor->id); 
            })->where('status', '=', 'pending')->get();

非常感谢p.wright的帮助

对于那些在谷歌上搜索类似内容的人,我使用了这个,它起了作用:

$supervisor = User::where('phone_number', $request->msisdn)->first();
            $orders = Order::whereHas('supervisors', function ($query) use($supervisor) { 
                $query->where('supervisor_id', $supervisor->id); 
            })->where('status', '=', 'pending')->get();

非常感谢p.wright的帮助

您是否将$supervisor传递到blade中,因为这表明您没有。嘿,没有处理blade变量。下面的答案正确地回答了问题。谢谢:)您是否将$supervisor传递到刀片中,因为这表明您没有。嘿,不要处理刀片变量。下面的答案正确地回答了问题。不过谢谢:)嘿,谢谢,这很有效!是否有一种方法也可以添加一个约束来检查关联订单表上的某些内容?因此,基本上是为了获取属于主管的所有订单,并且订单的状态为X?您是指这样的订单:$orders=order::where('status','=','X')->带有(['supervisors'=>函数($query){$query->where('supervisor\u id',$supervisor->id);}])->get();类似的,但它似乎抓住了所有待处理的订单,而不关心透视表上的主管id。所以当我只期待3排时,我得到了大约20排。试着记住。您是否将->with更改为->where has您已删除用法:$orders=Order::where('status','=','pending')->where has(['supervisors'=>函数($query)use($supervisor){$query->where('supervisor\u id',$supervisor->id);}])->get();嘿,谢谢,这很有效!是否有一种方法也可以添加一个约束来检查关联订单表上的某些内容?因此,基本上是为了获取属于主管的所有订单,并且订单的状态为X?您是指这样的订单:$orders=order::where('status','=','X')->带有(['supervisors'=>函数($query){$query->where('supervisor\u id',$supervisor->id);}])->get();类似的,但它似乎抓住了所有待处理的订单,而不关心透视表上的主管id。所以当我只期待3排时,我得到了大约20排。试着记住。您是否将->with更改为->where has您已删除用法:$orders=Order::where('status','=','pending')->where has(['supervisors'=>函数($query)use($supervisor){$query->where('supervisor\u id',$supervisor->id);}])->get();