如果关系有数据,Laravel Eloquent Model 返回数据

美好的一天,我正在尝试从 Eloquent 模型返回具有关系的数据。有没有办法(跳过/不返回)关系返回空数组作为结果的订单?

https://img4.mukewang.com/650d533b0001ca0503350164.jpg

 Order::with(['products' => function ($query) {

        $query->whereHas('progress', function ($query) {

            $query->where('progress_id', 30)->orWhereBetween('progress_id', [60, 90]);

        });

        $query->whereHas('product', function ($query) {

            $query->where('vendor_id', 3);

        })->with(['product' => function ($query) {

            $query->select('id', 'identifier', 'reference', 'shipping_id');

        }]);

        $query->select('id', 'order_id', 'product_id', 'quantity');

    }])

        ->whereHas('products')

        ->where('status_id', '=', 15)

        ->select('orders.id', 'orders.customer_id', 'orders.created_at')

        ->get();

因此,在这种情况下,我不想收到该订单,因为没有包含该订单的产品。另外,我不明白为什么我什至会得到结果,其中有 status_id = 15 的订单,但没有供应商_id = 3 的订单。该怎么做?感谢您的阅读。


蛊毒传说
浏览 92回答 3
3回答

白衣非少年

尝试这个:Order::whereHas('products' => function ($query) {        $query->whereHas('progress', function ($query) {            $query->where('progress_id', 30)->orWhereBetween('progress_id', [60, 90]);        });        $query->whereHas('product', function ($query) {            $query->where('vendor_id', 3);        });        // $query->select('id', 'order_id', 'product_id', 'quantity'); // This line will cause error    }])->with(['products', 'products.product:id,identifier,reference,shipping_id,vendor_id'])       ->where('status_id', 15)       ->get();

胡子哥哥

尝试这个Order::whereHas('products')->with(['products' => function ($query) {        $query->whereHas('progress', function ($query) {            $query->where('progress_id', 30)->orWhereBetween('progress_id', [60, 90]);        });        $query->whereHas('product', function ($query) {            $query->where('vendor_id', 3);        })->with(['product' => function ($query) {            $query->select('id', 'identifier', 'reference', 'shipping_id');        }]);        $query->select('id', 'order_id', 'product_id', 'quantity');    }])->where('status_id', '=', 15)        ->select('orders.id', 'orders.customer_id', 'orders.created_at')        ->get();

慕的地6264312

让我们试试这段代码:Order::has('product', '>=', 1)->get();
打开App,查看更多内容
随时随地看视频慕课网APP