2017-02-28 141 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