Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.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_Laravel 5_Laravel 5.5 - Fatal编程技术网

Php 多模型拉威尔关系中的问题

Php 多模型拉威尔关系中的问题,php,laravel,laravel-5,laravel-5.5,Php,Laravel,Laravel 5,Laravel 5.5,用户与创建者一对一有关系,但创建者与存档归属有关系 $creatorQuery = User::query(); $cultivator_id = 2; $creatorQuery = $creatorQuery->select('id', 'name', 'email', 'role'); $creatorQuery = $creatorQuery->with('creater', function($q) { $q->whereHa

用户与创建者一对一有关系,但创建者与存档归属有关系

$creatorQuery = User::query();
    $cultivator_id = 2;
    $creatorQuery = $creatorQuery->select('id', 'name', 'email', 'role');

    $creatorQuery = $creatorQuery->with('creater', function($q) {
        $q->whereHas('archive', function($q) use($cultivator_id) {
            $query->where('caltivater_id', $cultivator_id);
        });
    });

    $creators = $creatorQuery->get();

显示错误mb_strps()需要参数1为字符串,给定的对象

函数
应该传递到
creater
,因此您需要将调用更改为键/值数组:

$creatorQuery = $creatorQuery->with(['creater' => function($q) use($cultivator_id) {
    $q->whereHas('archive', function($q) use($cultivator_id) {
        $query->where('caltivater_id', $cultivator_id);
    });
}]);

您说过希望通过
Archive
模型中定义的
caltivater\u id
值获取用户。使用嵌套:

或使用点符号:

$creators = User::whereHas('creator.archive', function($q) use($cultivator_id) {
    $q->where('caltivater_id', $cultivator_id);
})
->with('creators')
->get();

你到底想达到什么目的?您想获取所有在相关的
存档
模型中拥有
Caltivator\u id=$Cultrator\u id
的用户吗?是的,但当我们尝试多重关系时,发现此错误mb\u strops()期望参数1为字符串,对象给定显示此错误未定义变量:Cultrator\u idbut show all record not check$query->where(‘caltivater_id’,$Cultrator_id);条件
$creators = User::whereHas('creator.archive', function($q) use($cultivator_id) {
    $q->where('caltivater_id', $cultivator_id);
})
->with('creators')
->get();