【发布时间】:2023-04-07 13:13:01
【问题描述】:
我有一个名为contacts 的表,其中包含contact_id 和user_id。
我想让这两个字段的组合独一无二并验证它们。所以我在迁移中所做的是:
$table->integer('user_id');
$table->integer('contact_id');
$table->timestamps();
$table->unique(['user_id', 'contact_id']);
这使得组合独一无二,当我尝试使用此代码插入重复项时:
Contact::create([
'contact_id' => $request->input('contact_id'),
'user_id' => $request->input('user_id'),
]);
return redirect(route('person-search'));
我收到此错误:
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-2' for key 'contacts.contacts_user_id_contact_id_unique' (SQL: insert into `contacts` (`contact_id`, `user_id`, `updated_at`, `created_at`) values (2, 1, 2020-12-05 09:26:09, 2020-12-05 09:26:09))
我想验证这 2 列并向我的用户显示自定义错误,而不是这个错误。我该如何为此编写验证?
【问题讨论】:
-
你能包含你当前正在插入的 PHP 代码吗?
-
添加到问题中
-
为什么有一个名为
contacts的数据透视表?这不是好的做法,并且违反了 Laravel 的命名约定。它应该被称为contact_user。
标签: php laravel validation