Как использовать порядок по запросу как с текущим столбцом таблицы, так и с столбцом таблицы отношений в laravel? - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь получить запись с порядком по запросу, но ситуация такова, что мне нужно использовать порядок как в текущем столбце таблицы, так и в столбце таблицы отношений в laravel. Я пробовал это

 $consignments = Consignment::where('delivery_run_id', $id)->whereIn('status', [
            'In Warehouse',
            'With On Forwarder',
            'In Transit (Warehouse->Delivery)',
            'Awaiting Pickup'
        ])->with(['consignment_run_sheet' => function ($query) {
            $query->orderBy('run_sheet_id');
        }])->orderBy('delivery_date', 'DESC')->get();
        $deliveryRuns = DeliveryRun::all();

Как мне этого добиться?

1 Ответ

0 голосов
/ 09 июля 2020

таким образом будут упорядочены только элементы отношения. решение - использовать подзапрос или объединение. использование подзапроса похоже на это, если предположить, что модальным для отношения consignment_run_sheet является ConsignmentRunSheet, а отношение имеет значение belongsTo:

 $consignments = Consignment::where('delivery_run_id', $id)->whereIn('status', [
            'In Warehouse',
            'With On Forwarder',
            'In Transit (Warehouse->Delivery)',
            'Awaiting Pickup'
        ])->with('consignment_run_sheet')
        ->orderBy(ConsignmentRunSheet::select('delivery_date')
                  ->whereColumn('consignments.id', 'consignment_run_sheet.consignment_id'), 'DESC')
        ->get()

источник: https://reinink.ca/articles/ordering-database-queries-by-relationship-columns-in-laravel

...