Как правильно отсортировать модель Orders по полю `datetime` модели Time, учитывая связь между ними?
У меня есть модель Orders, у которой есть связь с моделью Time. Когда я получаю модели Orders, я хочу отсортировать их по полю `datetime` модели Time. Однако, я не могу использовать обычный метод `orderBy`, так как данные связанной модели получаются в другом запросе. Можете ли вы подсказать, как решить эту проблему?
Вот код модели Orders:
```php
Order::with('time')->where('users_id', $this->user->id)->get();
class Order extends Model{
public function time(){
return $this->belongsTo(Time::class, 'time_id');
}
}
```
Чтобы отсортировать модели Orders по полю `datetime` модели Time, можно использовать метод `join` для объединения таблиц, а затем использовать метод `orderBy` для сортировки.
Вот как это можно сделать:
```php
Order::join('times', 'orders.time_id', '=', 'times.id')
->where('orders.users_id', $this->user->id)
->orderBy('times.datetime')
->select('orders.*')
->get();
```
В этом примере мы используем метод `join` для объединения таблиц `orders` и `times` по полю `time_id` модели Orders и полю `id` модели Time. Затем мы используем метод `orderBy` для сортировки по полю `datetime` модели Time. В конце мы используем метод `select` для выбора только полей модели Orders.
Обратите внимание, что мы используем `select('orders.*')`, чтобы выбрать только поля модели Orders. Если вам нужны и другие поля из связанной модели Time, вы можете добавить их в метод `select`.
Разделение списка советов с символом "
":
```
$orders = Order::with(['time' => function($query) use($userId) {
$query->where('users_id', $userId)->orderBy('datetime');
}])->get();
```