vollthegreat
@vollthegreat
Laravel back-end outsource

Возможно ли в Eloquent сортировать по Relation?

Есть сушность, которая подтягивает другие сушности: User::with('withdrawals.withdrawalitems')->get(); Возможно ли методами eloquenta (не теряя доступ к моделям), сделать сортировку(или магинацию) по withdrawalItems?
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 3
Alex_Wells
@Alex_Wells
PHP/Java Developer
Да. whereHas.
Ответ написан
v_decadence
@v_decadence
Сортировка по полю отношения только через ручной JOIN, так как with выполняется отдельным запросом.

Что-то вроде:
$query = Post::join('categories', 'categories.id','=','products.category_id');
$query = $query->select('categories.name as cat_name','products.*');
$query = $query->orderBy('cat_name','asc');
$records = $query->get();
Ответ написан
@AibekAS
Пагинация не будет работать для отношений. Только для главной сущности, в твоем случае для User.
А для сортировки
User::with(['withdrawals' => function($query) {
    $query->select('id', 'name')->orderBy('created_at')->with(['withdrawalitems' => function($query) {
        $query->select('id', 'name')->orderByDesc('created_at')
    }])
}])->get();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы