#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. а без соединения?