运行 where()不止一次

Running where() more more than one time

问题:如何 运行 where 查询 $cart 中的所有行,而不是仅查询 $cart[0] 或 [1] 或 [2]。

我正在尝试在 Laravel 中手动编写购物车代码。由于我是新手,我卡在了一个点上。请看下面的代码:

public function showCart()
{
    $user = Auth::user();
    $cart = Cart::where('user_id', $user->id)->get();
    $product = Products::where('id', $cart[0]->product_id)->get();
    return view('showCart')
           ->with('cart', $cart)
           ->with('user', $user)
           ->with('product', $product);
}

这是我显示用户购物车的功能。在这里,我试图显示用户购物车中的所有产品,并发送一个包含产品详细信息的变量。

但是,当我尝试将用户购物车中的所有产品作为 $product 数组发送时,我只收到了第一个产品。那是因为 $cart 中返回的行不止一个,但我无法编写查询来获取该行中的所有产品:

$product = Products::where('id', $cart[0]->product_id)->get();

。 . .因为,很明显,我正在编写一个查询以仅匹配 $cart.

中返回的第一行

提前致谢。

您可以使用 whereIndata_get 辅助函数:

$product = Products::whereIn('id', data_get($cart, '*.product_id'))->get();

data_get 适用于数组和对象。或者,您可以仅对数组使用 Arr::get