2017-02-28 58 views
0

我有一個Laravel系列,其中包含用戶手推車中的商品列表。下面是我用來獲取該集合代碼:用Laravel Collection中的產品名替換產品ID

$items = Cart_Item::all(); 
$user = JWTAuth::parseToken()->toUser(); 
$items = $items->where('user_id', $user->id); 
$items = $items->map(function ($item, $key) { 
    return collect($item)->except(['user_id', 'ip_address', 'created_at', 'updated_at'])->toArray(); 
}); 

有了這個,我得到以下輸出:

{ 
    "data": [ 
     { 
      "id": 1, 
      "product_id": 1, 
      "quantity": 2 
     } 
    ] 
} 

現在,在這我想用product模型與我的實際產品名稱來代替product_id和還使用product_pricing模型添加名爲price的字段。我怎樣才能做到這一點?

回答

1

如果你有正確的關係設置,你可以這樣做:

$items = $items->map(function ($item, $key) { 
    $product = Product::with('price')->where('id', $item->product_id)->first(); 
    return [ 
    'id' => $item->id, 
    'product_id' => $item->product_id, 
    'quantity' => $item->quantity, 
    'name' => $product->name, 
    'price' => $product->price->amount, 
    ]; 
}); 

或手動內連接方式:

$product = Product::select('*') 
->join('product_pricing as pp', 'pp.product_id', '=', 'product.id') 
->where('product.id', $item->product_id) 
->first(); 
+0

這並獲得成功。謝謝!我的意思是我修改它很少,以適應我,但邏輯完全相同 – JackSlayer94

+0

很高興它有助於:) – SteD

相關問題