В постгрес у команды TRUNCATE есть очень полезный флаг CASCADE который снесет не только указанную таблицу, но и все на которые есть связи. Собственно тут один товарищ делал фичу, там в процессе были миграции в которых он делал truncate на новые таблицы, чтобы подчистить временные тестовые данные, а при выкатке на прод остался без всей базы

https://twitter.com/mokevnin/status/1807778797933957553

А проблема в том что query builder внутри laravel подкидывает этот флаг CASCADE (вместо дефолтного поведения RESTRICT который запрещает это делать на таблицах с foreign key) если в качестве драйвера используется постгря. Ну и это менять не планируют, ибо не ломать же обратную совместимость для проверенного способа оторвать ноги

3 years passed, Laravel users still truncates their entire databases... Guess how I found out about this issue? Table::truncate() inside the migration deleted our production database yesterday :D https://github.com/laravel/framework/issues/35157