php - SQLSTATE[23000] : Integrity constraint violation: 1062 Duplicate entry '0430142821' for key 'users_melli_unique'

标签 php laravel

我知道之前问过这个问题,但我想知道如何才能停止显示此错误,而不是这个,我想在 Blade 中向用户显示自定义错误消息。

这是用户迁移:

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'));

当我的数据库中有一个 melli(例如 1234567890)并且我尝试再次写入 1234567890 时,就会发生此错误,因为 melli 字段是唯一的。

最佳答案

您需要unique验证规则并忽略更新中的 id

你可以这样做:

$request->validate([
   'melli' => 'min:10|max:10|unique:users,melli,' .$user->id,
]);

或者

$request->validate([
    'melli' => [
        'min:10',
        'max:10',
        Rule::unique('users')->ignore($user->id, 'id')
    ],
    'cart' => 'min:16|max:16'
]);

我想这就是你所需要的。

另外,一些helpful answer .

关于php - SQLSTATE[23000] : Integrity constraint violation: 1062 Duplicate entry '0430142821' for key 'users_melli_unique' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63689063/

相关文章:

php - 我们怎样才能只选择服务器数据库中的某些列并制作csv文件或excel文件?

php - Eloquent Many to Many attach() 正在传递一个空模型 ID

javascript - 无法从 Laravel 5 中的 PUBLIC 文件夹加载 AngularJs 文件

Laravel 和 Passport 获取 SQLSTATE[42S22] : Column not found: 1054 Unknown column 'api_token'

php - laravel 在 Controller 中的所有方法中共享变量

php - $_SERVER ['PHP_AUTH_USER' ] 为空

php - Laravel 8,找不到模型工厂类

php - 即使我知道参数的类型,我还需要准备语句吗?

php - 在 Laravel 中对只读模型进行单元测试的正确方法是什么?

php - 在 Laravel 4 中使用具有 Eloquent 关系的缓存标签