Laravel如果相关集合删除父项

时间:2019-03-23 00:02:17

标签: laravel eloquent

我有一个带有相关收藏的模型

现在我正在执行此查询

        $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 :(得分:0)

我们无法完全删除该父对象(带有索引),但是您可以像这样使用transform()将其设置为null

    $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;
        });

注意:这不会完全删除那些父母,但会将其设置为空。