【发布时间】:2015-05-08 00:03:27
【问题描述】:
取下面的代码sn-p。我正在加载与Inventory 有关系的OrderDetail 模型:
// Load order details for live orders and inventory ids
$order_details = \OrderDetail::whereIn('order_id', $live_order_ids)
->whereIn('inventory_id', $inventory_ids)
->with('inventory')
->get();
加载集合后,我正在执行以下处理:
// Deduct reserved stock from live un-picked orders
foreach ($order_details as $detail)
if (array_key_exists($detail->inventory->sku, $free_stocks))
$free_stocks[$detail->inventory->sku] -=
($detail->qty_ordered - $detail->qty_picked);
如您所见,从加载的集合中,我只需要以下内容:
- order_details.qty_ordered
- order_details.qty_picked
- inventory.sku
我想对此进行优化,只加载我需要的内容,即明确指定我想从主表和相关表中加载哪些列。
我该怎么做?当我尝试以下方法时,它似乎不起作用:
// Load order details for live orders and inventory ids
$order_details = \OrderDetail::whereIn('order_id', $live_order_ids)
->whereIn('inventory_id', $inventory_ids)
->with('inventory')
->get(['qty_ordered','qty_picked','sku']);
// Load order details for live orders and inventory ids
$order_details = \OrderDetail::whereIn('order_id', $live_order_ids)
->whereIn('inventory_id', $inventory_ids)
->with(['inventory' => function($query) {
$query->addSelect(['id','sku']);
}])
->get(['qty_ordered','qty_picked']);
有什么想法吗?
【问题讨论】:
标签: php laravel laravel-4 orm eloquent