Сортировка по связям в Laravel

Подскажите по Laravel, а какими способами можно отсортировать по связям ? 

query = Advertising::filter($request->all())->where('active', 1)->where('show', 1)->with(
            ['subscriber', 'typeservices']
        )->orderBy(
      'created_at',  'DESC'
        )->paginate(12);

Для сортировки по связям в Laravel вы можете использовать метод orderBy с именем связи и полем, которое нужно отсортировать. Например, чтобы отсортировать рекламные объявления по дате создания подписчика, вы можете использовать следующий код:

$query = Advertising::filter($request->all())
    ->where('active', 1)
    ->where('show', 1)
    ->with(['subscriber', 'typeservices'])
    ->leftJoin('subscribers', 'subscribers.id', '=', 'advertisings.subscriber_id')
    ->orderBy('subscribers.created_at', 'desc')
    ->select('advertisings.*')
    ->paginate(12);

В этом примере мы используем метод orderBy с именем связи subscriber и полем created_at, чтобы отсортировать рекламные объявления по дате создания подписчика. Также мы добавляем связь с таблицей subscribers, чтобы использовать поле created_at в сортировке. Кроме того, мы используем метод select, чтобы выбрать только поля из таблицы advertisings, чтобы избежать дублирования полей при присоединении таблицы subscribers.

Если вы хотите отсортировать по нескольким связям, вы можете использовать метод orderBy несколько раз. Например, чтобы сначала отсортировать рекламные объявления по имени подписчика, а затем по дате создания объявления, вы можете использовать следующий код:

$query = Advertising::filter($request->all())
    ->where('active', 1)
    ->where('show', 1)
    ->with(['subscriber', 'typeservices'])
    ->leftJoin('subscribers', 'subscribers.id', '=', 'advertisings.subscriber_id')
    ->orderBy('subscribers.name', 'asc')
    ->orderBy('advertisings.created_at', 'desc')
    ->select('advertisings.*')
    ->paginate(12);

В этом примере мы сначала сортируем по имени подписчика (subscribers.name), используя порядок сортировки asc, а затем по дате создания объявления (advertisings.created_at), используя порядок сортировки desc.

Вам может также понравиться...

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *