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

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

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

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

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

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

22 ответов

8 просмотров

точно также и здесь, только нужно 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 тоже не разглядел инструкции как это делается с префиксами(

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

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

Типа вызывать GetParent и проверять на соответствие GetModuleHandle?
The Bird of Hermes
67
Do any of you guys have interesting projects one could join? I'm a Middle Full-Stack developer (JS/TS, React & Node)
Lev Shapiro
40
$res = json_decode($наша строка из респонса); $res1 = array_map(fn($o) => $o->name, $res->breadcrumbs[0]->entities); Как такое будет на Хаскеле?.. В начале весь джейсон, в ко...
Хаскель Моисеевич Гопник
27
В чем сила брат, в NASM или FASM?
Isaac Kleiner
18
Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
11
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
Хтось використовував Vapor на Windows?
Jaroshevskii
15
Какое виндузовое сообщение приходит TTabSheet, что риэлайняться контролы на нем, даже у которых парент другой? Ситуация: открываю форму - кнопок нет, перелистываю на другой т...
Катерина Свиридова
7
Тут кста кто-нибудь NeoVim использует?
Simple Sorcerer
13
Карта сайта