@Drumsid

Не получается с миграциями разобраться в Laravel?

Только знакомлюсь с фреймворком и не пойму почему миграция не срабатывает?
Для примера хотел создать 2 таблицы posts и categories на основе примера из документации
post table
$table->string('title');
            $table->text('content');
            $table->unsignedBigInteger('category_id')->nullable();
            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');

categories table
$table->string('title');
пост лежит выше категорий в миграциях.
Запускаю миграции но вылетает ошибка. Долго не понимал что не так . И получается я не могу создать таблицу post потому что еще нет таблицы categories? Т.к. если поменять местами, категорию раньше поста и запустить миграцию то все отрабатывает.

А если бы в categories был тоже foreign на post то для этих действий $table->foreign надо создавать отдельную миграцию что ли? После создания обоих таблиц? Т.к. пока я так понимаю нет таблиц обеих, то и связь он не может сделать.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
получается я не могу создать таблицу post потому что еще нет таблицы categories
Получается.

надо создавать отдельную миграцию
Надо. Или просто ключи добавлять после создания таблиц в той же миграции. Но, к счастью, такая необходимость возникает примерно раз в никогда.
Ответ написан
Комментировать
Sanes
@Sanes
https://laravel.com/docs/8.x/migrations#foreign-ke...
$table->foreignId('category_id')
      ->constrained()
      ->onUpdate('cascade')
      ->onDelete('cascade');

Первым должа лежать миграция категорий, потом посты.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы