Magachka1, подойдет. встречаются проекты, которые надо тестировать, где ее не хватит, но редко и от них можно отказаться или часть задач передать коллегам. вот пример: во многих сайтах есть платежная система, то есть пользователь оплачивает покупку со скидкой. если вы в состоянии от баланса пользователя отнять сумму цен за товары и учесть скидку в 30% и проверить что итоговый баланс правильный, то все отлично.
Андрей, запрос уже сформирован полностью до using, то есть надо указывать явно таблицу. можно передать класс вторым аргументом в $this->belongsToMany(Genre::class). подробнее https://github.com/laravel/framework/issues/23115
Дмитрий, попробуйте мыслить нетопорно. например, в контролере нужна не просто модель findOrFail() в еще в запросе должен быть with() и whereHas. повторю: в простых случаях это удобно и оправдано, нет лишей строки кода