我有一个Laravel集合,其中包含用户购物车中的商品列表。下面是我获取该集合的代码:
$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_id
模型将product
替换为我的实际产品名称,并使用price
模型添加名为product_pricing
的字段。我怎么能这样做?
答案 0 :(得分: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();