Laravel удалить родителя, если связана коллекция - PullRequest
1 голос
/ 23 марта 2019

У меня есть модель со связанной коллекцией

сейчас я делаю этот запрос

        $data = DeliveryPartner::when($filter, function ($q) use ($request) {
        })
        ->with(['orders' => function ($query) {
            $query
                  ->where('delivery_partner_invoice_id', '=', '')
                  ->orWhereNull('delivery_partner_invoice_id')
                  ->whereIn('status', ['payment-accepted', 'completed', 'full-refund', 'partial-refund']);
        }])->get();

Теперь мне интересно. Если заказы возвращаются пустыми, возможно ли удалить этого родителя из коллекции?

Я знаю, что могу сделать это после красноречивого запроса с помощью цикла. Но возможно ли это сделать в запросе?

1 Ответ

0 голосов
/ 23 марта 2019

мы не можем полностью удалить этого родителя (с индексом), НО вы можете установить их на null, используя transform () , как это;

    $data = DeliveryPartner::when($filter, function ($q) use ($request) {
        })
        ->with(['orders' => function ($query) {
            $query
                  ->where('delivery_partner_invoice_id', '=', '')
                  ->orWhereNull('delivery_partner_invoice_id')
                  ->whereIn('status', ['payment-accepted', 'completed', 'full-refund', 'partial-refund']);
        }])->get()->transform(function($item){

                if(!$item->orders->count() ){
                    return;
                }
                return $item;
        });

Примечание: это не будет полностьюудалите этих родителей, но они будут пустыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...