在Laravel集合中将产品ID替换为产品名称
我有一个Laravel集合,其中包含用户购物车中的项目列表。下面是我获取该集合的代码:在Laravel集合中将产品ID替换为产品名称,laravel,Laravel,我有一个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)->exce
$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
}
]
}
现在,在本文中,我想使用产品模型将产品标识替换为实际的产品名称,并使用产品定价模型添加一个名为price的字段。我如何才能做到这一点?如果关系设置正确,您可以:
$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();
这就成功了。谢谢我的意思是,我对它做了一点修改以适应我,但逻辑是完全相同的