Laravel - SQLSTATE [23000]:完整性约束违规:1062 键“posts_user_id_unique”的重复条目“1”

Posted

技术标签:

【中文标题】Laravel - SQLSTATE [23000]:完整性约束违规:1062 键“posts_user_id_unique”的重复条目“1”【英文标题】:Laravel - SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'posts_user_id_unique 【发布时间】:2021-05-30 15:11:52 【问题描述】:

我有一个错误

SQLSTATE[23000]:违反完整性约束:1062 键“posts_user_id_unique”的重复条目“1”

如果我创建帖子并使用同一用户,则会出现错误

如果您使用不同的用户,它会起作用。

这是我在迁移中的代码,create_posts_table.php

$table->id();
$table->foreignId('user_id')->unique()->constrained()->onDelete('cascade');
$table->integer('category_id')->unsigned()->index();

create_categories_tables.php:

$table->id();
$table->string('name')->constrained()->onDelete('cascade');

这是我在控制器中的代码,PostController:

public function create()
        $this->authorize('create', Post::class);
        $categories = Category::pluck('name','id');
        return view ('admin.posts.create', ['categories'=>$categories]);
    
public function store()
        $this->authorize('create', Post::class);
        $inputs = request()->validate([
            'title'=>'required',
            'post_image'=>'file', //mime: jpeg, png
            'body'=>'required',
            'category_id'=> 'required'
        ]);
        if(request('post_image'))
            $inputs['post_image'] = request('post_image')->store('images');
        
        auth()->user()->posts()->create($inputs);
        session()->flash('post-create-message', 'Post was Created ' . $inputs['title']);
        // return back();
        return redirect()->route('post.index');

【问题讨论】:

$table->foreignId('user_id')->unique()->constrained()->onDelete('cascade'); 中删除 unique() 并再次运行迁移 【参考方案1】:

我认为你应该删除

->unique()

$table->foreignId('user_id')->unique()->constrained()->onDelete('cascade');

如果不是,用户在创建第二个帖子时会收到上述错误

【讨论】:

谢谢你,它有效.. 我忘了我用的是unique()...

以上是关于Laravel - SQLSTATE [23000]:完整性约束违规:1062 键“posts_user_id_unique”的重复条目“1”的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[23000]:Laravel 中的完整性约束违规

Laravel:数据表的 SQLSTATE [23000] 错误

Laravel:正确保存后返回重定向抛出 SQLSTATE [23000]:完整性约束违规

SQLSTATE[23000]:违反完整性约束:在 Laravel 5.2 中

Connection.php 第 729 行中的 QueryException:SQLSTATE[23000]:Laravel 5.2

Laravel 7 错误 - SQLSTATE [23000]:完整性约束违规:1048 列 'first_name' 不能为空