Запуск где () более одного раза - PullRequest
1 голос
/ 11 апреля 2020

Вопрос: Как выполнить запрос 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.

Заранее спасибо.

1 Ответ

1 голос
/ 11 апреля 2020

Вы можете использовать вспомогательную функцию whereIn и data_get :

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

data_get работает как с массивами, так и с объектами. Кроме того, вы можете использовать Arr :: get только для массивов.

...