Модель Laravel предоставляет все необходимые методы для работы с базой данных. Каждая модель отвечает за свой участок кода. Смешивать их - плохо. В Вашем коде, например, есть открепление записи фаворита, то есть действие над одной моделью из другой. Во-первых, это бизнес-логика, что-то к кому-то цеплять. Во-вторых, это неочевидное поведение, т.к. общение происходит в нелогичном для этого месте.
Если Вы так кичитесь своими знаниями ООП, дак выкиньте этот Laravel - это ж чемодан антипаттернов. На кой от Вам вообще нужен? Пишите свой код. Будет всё по канону... Вашему.
Начинаешь надоедать со своей инкапсуляцией. Мне по-барабану что и как называется. Я вижу принцип толстой модели, объединяющей в себе как работу с данными, так и бизнес-логику, включая работу с не родными данными из других моделей. Это плохо.
Если следовать Вашим принципам, то на фига вообще нужны контроллеры, сервисы, валидаторы?... Суйте всё в модели! Это ж инкапсуляция! Не отказывайтесь от своих принципов.
Привёл ссылки, по которым всё уже рассказал.