rsvega, роут с getGoodsByCategory нужно передвинуть за другие роуты категорий и использовать Model binding как написали иначе любой урл /category/sdefsfsdfsdfs из любого места будет вызывать ошибку
Слава, если сущности разные то в одинаковых ид проблемы нет. Если одинаковые то 1 таблица. Если одинаковые, но отличаются чем-то то 1 таблица с разными типами и связями. Вангую последний вариант подойдет. Короче 100% нужно пересмотреть логику и структуру бд. Подпирать костыли костылями не лучшее решение.
Шамиль Хайрулаев, с коллекцией (там где без скобок) есть смысл работать только в одном случае - если все модели из коллекции в этом екшене используются. Например, подписчики жадно загружены для показа. Тогда юзать contains. В остальном бд запросы.
Шамиль Хайрулаев, для проверки коллекцией есть метод $user->subscribers->contains($subscriber);
$isFollowing логически может быть только boolean значение иначе говнокод.
А как разорвать между ними отношения не знаешь?(Отписаться)
Это нужно спрашивать в новом вопросе с примером кода.
Алексей Скляров, такую инфу нужно выносить в заголовок. В любом случае, не использовать для этого циклы и обсерверы. Запросы к бд и массовое удаление. И покрыть процесс тестами. Я бы вообще не заморачивался с удалением пока нет такой потребности. Отметил deleted_at и никакого гемороя)
Запускать евент для каждой отдельной модели при групповом удалении нет смысла. Событие (декременты инвалидации итд) можно запустить после удаления всех моделей. on delete cascade для этой задачи самое то.