Laravel 6.x отношение устанавливает значение по умолчанию при удалении на партнере отношения - PullRequest
0 голосов
/ 04 мая 2020

У меня есть две следующие модели:

stockItem. category

stockItem может иметь один category, а category может иметь много stockItem.

В category всегда есть первая категория с идентификатором 1 Он не может быть удален.

Теперь, если удаляется category с идентификатором 2, все stockItem с отношением ко второму category должны быть обновлены до первого category. * 1020. *

Способна ли ORM на это или мне нужно написать собственную функцию удаления? Если да, то как мне перезаписать функцию удаления?

1 Ответ

1 голос
/ 04 мая 2020

Для этого есть способ go, но вы должны внести некоторые изменения.

Laravel имеет действия onDelete при выполнении миграций. Для вашей проблемы, я думаю, подходит:

->onDelete('set null');

Чтобы выполнить эту работу, вам придется изменить свой внешний ключ (categoryId), чтобы он мог обнуляться.

Сделав это, когда вы удалите категорию, тогда все отношения, которые были в этой категории, будут иметь в своем поле значение null, то есть они будут принадлежать category1, который никогда не может быть удален.

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

Если вам действительно нужен идентификатор, равный 1, тогда вы должны использовать либо помощника класс, который вы строите сами, или Laravel Наблюдатели .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...