【发布时间】:2020-12-20 15:37:09
【问题描述】:
我知道之前有人问过这个问题,但我想知道如何才能停止显示这个错误,而不是这个我想在刀片中向用户显示自定义错误消息。
这是用户迁移:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('image')->nullable();
$table->string('email')->unique();
$table->boolean('is_superuser')->default(0);
$table->boolean('is_staff')->default(0);
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('phone_number')->nullable()->unique();
$table->enum('two_factor_type', ['off', 'sms']);
$table->string('melli')->nullable()->unique();
$table->rememberToken();
$table->timestamps();
});
}
更新: 这是我的插入功能:
$user = User::find(auth()->user()->id);
$request->validate([
'melli' => 'min:10|max:10',
'cart' => 'min:16|max:16'
]);;
$user->update([
'name' => $request['name'],
'cart' => $request['cart'],
'melli' => $request['melli'],
'gender' => $request['gender']
]);
return redirect(route('profile.index'));
当我的数据库中有一个像 1234567890 这样的 melli 并且我尝试再次写入 1234567890 时会发生此错误,因为 melli 字段是唯一的。
【问题讨论】:
-
您没有显示插入查询,但我建议使用 try/catch 块,或者在插入之前查找现有的 Melli 字符串。
-
通常您会在验证期间处理此类状态,并将自定义消息返回给刀片。如果您想自己处理它,那么正如@aynber 所建议的那样,捕获异常并将您自己的消息返回给 plade
-
问题已更新
-
在 melli 字段中使用
unique验证。 laravel.com/docs/7.x/validation#rule-unique 也检查这个以处理更新stackoverflow.com/a/48492198/12459934 -
谢谢大家的回答很有帮助