Конечно в моделях, где же еще.
Если вопрос о том, правильно ли подтягивать сразу связи жадной загрузкой ( ->with(['relation1', 'relation2']) ), при фильтрации ( ->where(['value1' => $value1..]) ), то тут 2 ответа, либо да, либо нет)
Если эти релейшены нужны только для того что бы отфильтровать данные по полю из релейшена, то нет. Лучше использовать для этого join.
Если эти данные из релейшенов вам еще где то понабятся, то да, лучше сразу загрузить их жадно (как вы и сделали), что бы не делать потом N лишних sql-запросов, где N колиество строк выборки.