我有三個型號,訂購,OrderProduct和產品。 OrderProduct是創建存儲信息(如價格或數量)的Order和Product關係的表。在我的產品清單行動中,我需要顯示每件產品有多少訂單已開啓(掛起或付款)。所以我想急於負載這種關係是這樣的:Laravel預先加載計數關係
// ProductController.php
public function index()
{
$data = Product::with(['reservedStock']);
return $data;
}
而且
//Product.php
public function reservedStock()
{
return $this->hasMany(OrderProduct::class, 'product_sku')
->selectRaw('order_products.product_sku, count(*) as count')
->join('orders', 'orders.id', 'order_products.order_id')
->whereIn('orders.status', [Order::STATUS_PENDING, Order::STATUS_PAID]);
}
它的工作原理,但是從它的反應是這樣的一個數組:
{
"sku": 384,
"brand_id": null,
"line_id": null,
"title": "Alcatel Pixi 4 Colors OT4034E 8GB 3G Preto",
"ean": null,
"ncm": 85171231,
"price": "315.44",
"cost": "0.00",
"condition": 0,
"warranty": null,
"created_at": "2016-08-25 10:45:40",
"updated_at": "2017-03-30 17:51:07",
"deleted_at": null,
"reserved_stock": [
{
"product_sku": 384,
"count": 4
}
]
}
我想只有計數reserved_stock: 4
。
如何做任何想法?
PS:我已經嘗試過做withCount
位與它我無法創建訂單表的連接通過訂單狀態進行過濾。
讀這可能會幫助您:HTTP://計算器.COM /問題/ 20770284/laravel-的hasMany - 關係 - 數數 - 的 - 喜歡 - 和 - 評論 - 在崗 – Daan
@Daan它不是預先加載。我只想爲我的所有產品提供一個查詢。在你引用之後,他創建了另一個屬性count,然後我把它稱爲foreach或其他東西。我需要在顯示之前加載它。 –
您只能返回計數數字。 '返回計數($ product-> reservedStock);'? –