Повторяющаяся запись при создании постов с слагами в laravel

Когда я создаю первый пост, он создается успешно, но когда я создаю еще один пост, я получаю эту ошибку, и мои ярлыки не работают.

Это ошибка:

"SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1' for key 'posts_slug_unique' (SQL: insert into posts (title, body, updated_at, created_at) values (Gacho's Second Post, Body For Gacho's Second Post, 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);
 }
dd($request->all()), какое там значение slug? Разве это уже не в таблице?
u_mulder 10.08.2018 17:33

у вас есть уникальное ограничение ключа в таблице, поэтому оно выдает ошибку, убедитесь, что ваше значение slug не повторяется

pseudoanime 10.08.2018 17:35

@u_mulder У меня есть значение в таблице для первого сообщения, оно равно 1, и теперь, когда я пытаюсь создать второй пост, я получаю эту ошибку. Это похоже на дублирование этого значения, но я не могу найти решение

rose 10.08.2018 17:53

@pseudoanime Да, я знаю это, но когда я создаю другой пост, я ставлю другое значение, и это все та же ошибка. Это дублирующее значение слага первого поста.

rose 10.08.2018 17:55

@u_mulder, вы вообще не публикуете слаг явно? попробуйте dd ($ request-> all ()); в вашем контроллере, и если он показывает существующее значение слага, то вы знаете проблему

pseudoanime 10.08.2018 18:06

@pseudoanime Я нет OP.

u_mulder 10.08.2018 18:22

@pseudoanime Я пробовал dd ($ request-> all ()); и он показывает новые значения, которые я ввел, но когда я удаляю dd и снова пытаюсь ввести, я получаю ту же ошибку.

rose 10.08.2018 18:29

Добавьте slug в fillable и удалите default () из миграции. Технически уникальные значения не должны содержать значений по умолчанию.

Afraz Ahmad 10.08.2018 19:28
0
8
863
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы должны сначала удалить Default () из миграции.

Надеюсь, вы установили значение по умолчанию на 1, которое сохраняется во второй раз.

Возможные ошибки

1-Вы не добавляли пулю в массив заполняемый в вашей модели, как это.

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

2-Вы вызываете слаг с неправильным именем или вообще не отправляете слаг в запросе. Если вы не отправляете из своей формы, создайте ее в контроллере.

3- Имя вашего служебного поля не совпадает с именем столбца в базе данных.

Другие вопросы по теме