Php Laravel在加载集合时选择特定列

Php Laravel在加载集合时选择特定列,php,laravel,laravel-4,orm,eloquent,Php,Laravel,Laravel 4,Orm,Eloquent,以下面的代码片段为例。我正在加载OrderDetail模型与库存的关系: 加载集合后,我将执行以下处理: // 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->inven

以下面的代码片段为例。我正在加载OrderDetail模型与库存的关系:

加载集合后,我将执行以下处理:

// 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);
如您所见,从加载的集合中,我只需要以下内容:

订单详细信息。订购数量 订单\u详细信息。拣选数量\u 库存单位 我想对此进行优化,只加载我需要的内容,即明确指定我要从主表和相关表加载的列

我该怎么做?当我尝试以下方法时,它似乎不起作用:

// 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']);

有什么想法吗?

您需要在查询中使用select来获取所选列。或者,如果它不起作用,则需要使用laravel连接

另外,请参见laravel官方文件中的“从查询中选择列”。 .


或者这样$订单详细信息=\OrderDetail::其中'order\u id'、$live\u order\u id->其中'inventory\u id'、$inventory\u id->inventory->get['inventory.sku'、'Quantity\u ordered'、'Quantity\u picked']->toArray;这就是你需要的
// 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']);
// 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']);
    }])
    ->select('qty_ordered','qty_picked')
->get();