Laravel延迟加载参考$ this-> Load()自定义约束中的属性

杰罗萨斯

我在模型上有一个关系,需要在控制器上延迟加载,但是我需要使用原始模型中的属性进行查询约束。所以我有这样的事情:

$Users = User::all();
$Users->load(['disputes' => function($query){
 $query->where('property', $this->property );
}]);

但它返回未定义的属性$ account_number_tu。如何在执行load()时确保$ this引用$ Users中的每个$ User?我尝试在模型中进行此约束,但是

$this->property;

返回null。

埃里克·塔克(Eric Tucker)

在后台,模型load()初始化的实例,然后将您传递的参数传递给builder上的方法。这样,您可以使用该方法完成方法中的所有操作。BuilderUserloadwithloadwith

要回答您的问题,您可以执行以下操作:

$Users = User::all();
$Users->load(['disputes' => function($query) {
    return $query->select('disputes.*')
        ->leftJoin('disputes', 'disputes.user_id', '=', 'users.id')
        ->whereRaw('users.property = disputes.property');
}]);

这将与以下内容相同:

$Users = User::with(['disputes' => function($query) {
    return $query->select('disputes.*')
        ->leftJoin('disputes', 'disputes.user_id', '=', 'users.id')
        ->whereRaw('users.property = disputes.property');
}]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档