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