我正在尝试提交表单并验证内容。在其中一个请求中,我需要制定一个特殊规则。我按照文档说它使用unique并声明规则。
use Illuminate\Validation\Rule;
Validator::make($data, [
'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
]);
我正在尝试文档中的示例,但我得到了这个错误:
Class 'Illuminate\Validation\Rule' not found
我宣布了这条线
use Illuminate\Validation\Rule;
在我的控制器中,但错误仍然存在。
您不必为此使用Rule类。
只需遵循以下规则即可:
'email' => 'required|unique:users,email,' . $user->id
您发布的示例中的Rule类用于验证唯一字段。例如,如果您有一封电子邮件,您将希望在表格中是唯一的,当您要编辑记录时,在保存时,将收到验证器错误,因为您正在保存已在数据库中的相同电子邮件。
您发布的示例:
use Illuminate\Validation\Rule;
Validator::make($data, [
'email' => [
'required',
Rule::unique('users')->ignore($user->id),
],
]);
与此案例相关,编辑记录并验证电子邮件(表用户中唯一)。此示例避免针对同一用户验证电子邮件 -
要使用它,您必须添加类(不包括在laravel安装中)。 qazxsw poi你有它。
在您的问题中,您说的是使用唯一规则。唯一规则适用于表格,电子邮件,个人身份识别(法律)等必须具有唯一性的字段。验证您是否需要唯一规则。
在Laravel 5.3+上添加了Here类。 我确定你已经测试了旧的laravel版本。
见问题(PR)15809:Illuminate\Validation\Rule
我在版本[5.3] Object based unique and exists rules for validation.上遇到了这个问题。我刚刚更新到最新的补丁版本(在我的情况下是v5.3
)并且一切正常!
你为什么不尝试这样的方法:
v5.3.31
如果列也是如果名为email laravel将自动知道,否则执行
$validator = Validator::make($request->all(), [
'email' => 'required|unique:<table_name>',
]);
if ($validator->fails()) {
...
}
以下是文档验证部分的链接:required|unique:<table_name>,<column_name>