chelkaz
@chelkaz

Что означает данная запись в миграции?

$table->increments('id');
$table->string('owner');
$table->string('image_url');
$table->timestamps();
$table->foreign('owner')
->references('id')
->on('users');
Что означает именно:
$table->foreign('owner')
->references('id')
->on('users');
  • Вопрос задан
  • 170 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Kraky
Разница заключается в том, что с внешним ключом вы не сможете вставить в таблицу данные, отсутствующие у связующей таблице в колонке с внешним ключом, а так же не сможете удалить эту запись если данный внешний ключ используется в связующей таблице.
Если вы укажете это в модели, то это будет то же самое, что и без внешнего ключа, но как я сказал выше, вы не будете застрахованы от удаления и null вставок. А так же для foreign можно дописать еще и стратегию, например
$table->foreign('user_id')->references('id')->on('users')-onDelete('cascade');

Что будет означать, что при удалении пользователя, записи из этой таблицы, которые содержат внешний ключ, ссылающийся на пользователя, будет удален.
Ответ написан
Suinly
@Suinly
Это реализация внешнего ключа через конструктор таблиц Laravel.

Подробности в документации:
https://laravel.com/docs/5.2/migrations#foreign-ke...
https://laravel.ru/docs/v5/schema#внешние
Ответ написан
Ваш ответ на вопрос

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

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