У меня есть собственный код, чтобы пользователи заказывали по столбцу updated_at:
$customers = \App\Customer::whereHas('user', function ($query) {
$query->orderBy('updated_at', 'DESC');
})->get();
Схема стола:
Schema::create('customers', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->string('name')->nullable();
$table->string('lastname')->nullable();
$table->string('surname')->nullable();
$table->text('about')->nullable();
$table->timestamps();
});
Вы можете увидеть результат запроса здесь. Почему я получаю неверный результат или мой запрос неверен?
@Bhoomipatel Вы можете увидеть мою схему таблицы в обновленном вопросе. В моей таблице пользователей есть схема таблицы пользователей по умолчанию laravel.
Вы пытаетесь получить заказанные записи в соответствии с меткой времени таблицы клиентов или пользователем? @AndreasHunter
Ваш запрос неверен. Обратное отношение, если вы хотите отсортировать по пользователям updated_at
Итак, если вам нужна информация о пользователе, почему бы не вызвать от пользователей и не собрать информацию о клиентах от пользователя и не сортировать по модели пользователя напрямую. @AndreasHunter






Предполагая, что вы хотите отсортировать своих клиентов, а не отношение user, вы должны использовать orderBy в результате Customer:
$customers = \App\Customer::whereHas('user')
->orderBy('updated_at', 'DESC')
->get();
И поскольку вы не хотите заказывать пользователей, вам не нужно использовать whereHas(). Простой has() подойдет:
$customers = \App\Customer::has('user')
->orderBy('updated_at', 'DESC')
->get();
у меня коллектор не работает правильно. Вы можете увидеть результаты запроса. здесь У меня в модели клиента отношения belongsTo для User eloquent, и мне нужно отсортировать по столбцу users.updated_at и получить клиентов. Действия пользователей сохранены в моей таблице users, поэтому мне нужен этот тип запроса.
попробуйте этот запрос:
$customers = \App\Customer::whereHas('user', function ($query) {
$query->orderBy('users.updated_at', 'DESC');
})->get();
На самом деле я подозреваю, что вы тоже пытаетесь восстановить отношения в порядке. Вам нужно быстро загрузить, заказать и использовать:
$customers = \App\Customer::with(['user' => function ($query) {
$query->orderBy('updated_at', 'DESC');
})->whereHas('user')->get();
Это должно установить отношения и отфильтровать всех клиентов, у которых нет пользователя.
Попробуйте этот запрос, возможно, он вам подходит:
$query = App\Customer::join('users as user', 'user.id', '=', 'customers.user_id')
->orderBy('user.updated_at', 'desc')
->select('customers.*')->get();
предоставьте схему вашей таблицы.