Порядок по соотношению с нумерацией страниц laravel красноречивый

#laravel #eloquent

Вопрос:

У меня есть отношения ниже, приложение принадлежит пользователю.

Таблица пользователей

 ID | Name
 1 | Danny
 2 | Mark
 

Таблица приложений

 ID | user_id
 1 | 1
 2 | 2
 

Application.php

 public function user()
{
    return $this->belongsTo(User::class);
}
 

Я пытаюсь отсортировать приложение по имени пользователя и разбить результат на страницы. Я попробовал код ниже, разбиение на страницы работает, но порядок по не имеет никакого эффекта.

     $query = Application::query();

    $query = $query->with(['user' => function ($query){
            $query->orderBy('name', 'DESC');
    }]);

    $query = $query->paginate(10);
 

Комментарии:

1. у вас есть какое-нибудь решение с with() и paginate() ?

Ответ №1:

Попробуйте использовать внутреннее соединение и упорядочить по столбцу отношения:

 $applications = Application::select('*')
    ->join('authors', 'applications.user_id', '=', 'users.id')
    ->orderBy('authors.name', 'DESC')
    ->paginate(10);
 

Комментарии:

1. а без соединения?

Ответ №2:

Попробуйте это:

 Application::join('users', 'applications.user_id', '=', 'users.id')
    ->orderBy('users.name','desc')
    ->with('users')
    ->get();
 

Комментарии:

1. а без соединения?