Для этого есть способ go, но вы должны внести некоторые изменения.
Laravel имеет действия onDelete
при выполнении миграций. Для вашей проблемы, я думаю, подходит:
->onDelete('set null');
Чтобы выполнить эту работу, вам придется изменить свой внешний ключ (categoryId
), чтобы он мог обнуляться.
Сделав это, когда вы удалите категорию, тогда все отношения, которые были в этой категории, будут иметь в своем поле значение null, то есть они будут принадлежать category1
, который никогда не может быть удален.
Это подход к чистой миграции, и это самое близкое, что вы можете получить. Таким образом, вы будете знать, что когда categoryId равен нулю или 1, этот stockitem принадлежит категории 1 или был перенесен в нее, потому что другая категория была удалена.
Если вам действительно нужен идентификатор, равный 1, тогда вы должны использовать либо помощника класс, который вы строите сами, или Laravel Наблюдатели .