在laravel中创建带有slug的post时出现重复条目

guykilcj  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(275)

当我创建第一个帖子时,它成功地创建了,但是当我创建另一个帖子时,我得到了这个错误,我的slug无法工作。
这是错误:
“sqlstate[23000]:完整性约束冲突:1062键”“posts\u slug\u unique”“的重复条目”“1”“(sql:insert into” posts ( title , body , updated_at , created_at )价值观(gacho第二岗位,gacho第二岗位主体,2018-08-10 15:19:30,2018-08-10 15:19:30))
这是我的密码。

class AddSlugToPosts extends Migration
 {

 public function up()
 {
    Schema::table('posts', function ($table) {
        $table->string('slug')->unique()->after('body')->default();
    });
 }

 public function down()
 {
    Schema::table('posts', function ($table) {
        $table->dropColumn('slug');
    });
 }
 }

 public function rules()
 {
    return [
        'title' => 'required|max:255',
        'body' => 'required',
        'slug'  => 'required|alpha_dash|min:5|max:255|unique:posts,slug'
    ];
 }

 public function store(PostRequest $request)
 {
    $post = Post::create($request->all());
    Session::flash('success', 'The blog post was successfully saved!');
    return redirect()->route('posts.show', $post->id);
 }
esbemjvw

esbemjvw1#

您应该首先从迁移中删除default()。
希望您已经将默认值设置为1,这是第二次保存。
可能的错误
1-你没有像这样在模型中的可填充数组中添加slug。

protected $fillable = ['slug','title','body'];

2-您用错误的名称调用slug,或者根本没有发送slug请求。如果不是从窗体发送,请在控制器中创建它。
3-slug字段名与数据库中的列名不同。

相关问题