【发布时间】:2021-12-22 20:53:07
【问题描述】:
在这个表格中,有3个主要参数:
"is_active" (BOOLEAN)
"position" (INT)
"id"
这是唯一规则
'position' => [
'required_if:is_active,true|integer|min:1',
Rule::unique('tablename')->where(function($query) { $query->where('is_active', '=', 'true')->where('id', '!=', $this->id); }),
],
此规则应确保position 参数在is_active 设置为true 的数据中唯一。当前的问题是该规则已被忽略,我能够保存更新/编辑功能,即使按权利应该没有通过此验证。
id=1,位置=1,is_active=true
id=2,位置=2,is_active=true
当我将位置从 2 更改为 1 时,如上所示,它应该显示错误消息,而不是成功。但事实并非如此。
编辑:$this 属性
ParameterBag {#1862
#parameters: array:13 [
"is_active" => "1"
"order" => "2"
]
}
注意:这是在 Laravel 5.4 中,请不要建议我升级到 Laravel 8 等。
【问题讨论】:
-
没有
where,规则是否有效? -
是的。我刚刚意识到“$this”变量存在问题。
标签: php laravel validation laravel-5