在Laravel集合中将产品ID替换为产品名称

在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

我有一个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
        }
    ]
}

现在,在本文中,我想使用产品模型将产品标识替换为实际的产品名称,并使用产品定价模型添加一个名为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();

这就成功了。谢谢我的意思是,我对它做了一点修改以适应我,但逻辑是完全相同的