有没有办法以类似于在with()
上使用scopes的方式将此Closure抽象到我的MerchantUser模型?
到目前为止,我有这个有效:
$merchant_user->load(['permissions' => function ($query) use ($merchantId) {
if ($merchantId) {
$query->where('merchant_user_permission.merchant_id','=', $merchantId);
}
}]);
但我想做这样的事情:
$merchant_user->loadPermissions($merchantId);
在我的模型中:
public function scopeLoadPermissions($query, $merchantId = null)
{
return $query->load(['permissions' => function ($q) use ($merchantId) {
if ($merchantId) {
$q->where('merchant_user_permission.merchant_id','=', $merchantId);
}
}]);
}
目前只返回错误:
"方法Illuminate \ Database \ Query \ Builder :: load不存在。"
答案 0 :(得分:1)
对于这种情况,您不需要添加范围。相反,如果您可以在模型中添加此功能
public function loadPermissions($merchantId = null)
{
return $this->load(['permissions' => function ($q) use ($merchantId) {
if ($merchantId) {
$q->where('merchant_user_permission.merchant_id','=', $merchantId);
}
}]);
}
和用法
$merchant_user->loadPermissions($merchantId);