169 похожих чатов

Вопрос по foreign ключам. Как вообще правильно реализовывать взаимосвязи с

текущей таблицы? Например есть сущность categories, а в ней есть parent_category_id (которая может привязываться к категории из текущей таблицы).

С разными таблицами я обычно прописываю в миграциях так:

$table->foreign('category_id')
->references('id')
->on('categories');

Но в той ситуации что я описал, что бы создать связь, получается нужно что бы таблица уже была создана. Или foreign нужно в таком случае прописывать уже после создания таблицы? Вот не совсем понятно..

22 ответов

15 просмотров

точно также и здесь, только нужно parent_category_id разрешить быть null

получается тогда этот foreign нужно прописывать в отдельной Schema::table...?

Я обычно отдельные миграции делаю для связей. Создание, связи.

на данный вопрос нет однозначного ответа, каждый делай как пожелает

можете показать пример, какой командой создаёте отдельные миграции вы, и как прописываете связи? Я например всегда создаю модель, а к ней привязываю миграцию через php artisan make:model Category -m , а вы получается make:migrate напрямую делаете?

ну я данные из текущей таблицы обычно никак не связывал, но правильно как раз таки связывать, так как связь то есть)

отдельно миграция на создание таблицы отдельно миграция на изменение таблицы, где прописываешь связь

art make:migration add_foreign_key_to_some_table

да, я раньше ~ так же делал, только в той же миграции отдельную Schema создавал (от самой таблицы), потом начал всё в одну схему кидать

Ага. А потом ты добавляешь таблицы, добавляешь поля. Будешь старую миграцию редактировать?

Ясненько.

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

Ты не понял мой вопрос.

возможно

ну я обычно захожу в pma и SQL запросами всё правлю, предварительно поправив миграции (на будущее, на случай "перезапуска")

Йаааасно. Давай, удачки.

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

а где можно посмотреть правильные именования миграций (что бы Schema автоматически создавалась), или как правильно это загуглить? С foreign получилось, а вот для добавления колонок не вышло.. На странице доки с laravel migrations что то не увидел, а в php artisan help make:migration тоже не разглядел инструкции как это делается с префиксами(

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта