首页 > 解决方案 > 在 laravel 中使用 slug 创建帖子时出现重复条目

问题描述

当我创建第一个帖子时,它会成功创建,但是当我创建另一个帖子时,我会收到此错误,并且我的 slug 将无法正常工作。

这是错误:

“SQLSTATE [23000]:完整性约束违规:1062 键“posts_slug_unique”的重复条目“1”(SQL:插入poststitle、、、、body)值(Gacho 的第二篇文章updated_atcreated_atGacho 的第二篇文章的正文,2018-08-10 15: 2018-08-10 19:30 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);
 }

标签: phpmysqllaravelslug

解决方案


您应该首先从迁移中删除 Default()。

希望您已将默认值设置为 1,这是第二次保存的。

可能的错误

1-您没有像这样在模型中的可填充数组中添加 slug。

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

2-您以错误的名称调用 slug,或者您根本没有发送 slug 请求。如果您不是从表单发送,则在控制器中创建它。

3-您的 slug 字段名称与数据库中的列名称不同。


推荐阅读