我只需要显示模型中附加到某些组的那些记录。 (“belongsToMany”关系)。 (电影模型插件列表的后端页面) 我想获取当前用户的组并创建查询。
我的意思是:
我使用“关系”字段将记录附加到组。
即:
在“电影”模型中使用$ belongsToMany。
public $belongsToMany =[
'groups' =>[
'Elisseiidev\MyPlugin\Models\Groups',
'table' => 'elisseii_myplugin_movies_groups',
'order' => 'name'
]
];
插件中的“Groups”模型使用标准表“backend_user_groups”。
现在记录包含有关附加组的信息。 你可以看到关于它的video tutorial
我需要用户无法编辑不属于他们组的记录。 代码必须是动态的。
我需要一个详细的答案,因为我正在学习)) 提前感谢您的时间。
答案 0 :(得分:0)
您需要将此方法添加到控制器,使用列表行为意味着显示列表。
public function listExtendQuery($query) {
$user = \BackendAuth::getUser();
$codes = $user->groups->pluck('code')->toArray();
$query->whereHas('groups', function ($q) use ($codes){
$q->whereIn('groups.code', $codes);
});
}
此listExtendQuery
方法将使用我们为用户显示的列表自定义条件扩展查询。
这里我们获取Be user然后我们提取code
因为它将是数组,用户可以有多个组。
现在你的Movies
表格有groups
关系,所以它可以有多个组,所以现在我们可以检查一下,如果该电影组代码在用户中可用,那么我们就可以向他显示列表项。
感染您不需要创建新模型(Elisseiidev\MyPlugin\Models\Groups
),如果您不需要其他功能,可以直接使用内置模型。
你可以像
那样简单地做public $belongsToMany = [
'groups' => [
Backend\Models\UserGroup::class,
'table' => 'elisseii_myplugin_movies_groups',
'order' => 'name'
]
];
让我知道它是否有效。