Laravel: как отсортировать коллекцию с полем hasMany

У меня есть пять таблиц:

details имеет поля id, name и имеет отношение hasMany к взносам.

purpose имеет поля id, name и имеет отношение hasMany к взносам.

period имеет поля id, name и имеет отношение hasMany к взносам.

user с полями id, name и имеет отношение hasMany к взносам.

а также

вклады, имеющие id, amount и отношения с user_id, detail_id, purpose_id, period_id

Теперь я хочу получить все contributions определенного user (отфильтрованного по user_id), а затем отсортировать результат по period.name, detail.name и purpose.name.

Какие-либо предложения?

Вопрос был идентифицирован как возможный дубликат Laravel orderBy в отношении . Однако есть принципиальная разница.

там есть связь между пользователем и комментарием и пользователем и публикацией. однако в моем случае нет никакой связи между пользователем и таблицами деталей/целей/периодов.

<?php
class User
{
    public function comments()
    {
        return $this->hasMany('Comment');
    }
}

в этом случае это возможно, но по той же аналогии в моем случае класс User не имеет никакой функции details() для получения отношений hasMany. Мой пользователь имеет отношение только к таблице вкладов, а таблица вкладов имеет отношения к таблицам подробностей и т.д.

надеюсь, я смогу прояснить разницу.


person Ashutosh    schedule 01.10.2020    source источник
comment
Отвечает ли это на ваш вопрос? Laravel orderBy в отношениях   -  person Kamlesh Paul    schedule 01.10.2020
comment
Вы пробовали здесь ответ с наибольшим количеством голосов https://stackoverflow.com/questions/26130101/ordering-related-models-with-laravel-eloquent/26130907#26130907 ? конечно, вам придется добавить каждое отношение в метод Contributions::with(['details' => (), 'purpose ' => (), 'period ' => (), 'user ' ])   -  person Jairo Nava Magaña    schedule 01.10.2020