**目标:**验证用户更新输入,目标是不允许特殊情况。应检查用户模型的关系(角色)。在以下情况下,不能为用户分配角色:状态为0
的Visitor
。其他一切都是允许的。
**问题:**在我的Where条件实现中,验证在第一个条件处就已经失败了。因此,如果角色是访问者,则验证失败。第二个条件的状态根本不考虑。
users: id, name
roles: id, name, permissions, status
我的验证规则方法:
public function rules()
{
return [
'name' => 'required',
'roles.*' => [Rule::exists(Role::class, 'id')
->where(function (Builder $q) {
$q->where('name', 'Visitor')
->where('status', '!=', 0);
})
];
}
1条答案
按热度按时间wz8daaqr1#
如果你想限制
roles.*
,我假设它是Role
模型表roles
中的id
,你可以使用Rule::notIn()
方法:这将转换为
Rule::notIn([1])
(用Visitor
角色的id
替换1
),如果roles.*
的任何值是1
,则验证将失败。Rule::in()
执行此操作,但查询稍微复杂一些 *参考文献:
https://laravel.com/docs/10.x/validation#rule-not-in
https://laravel.com/docs/10.x/validation#rule-in