Laravel 7.14 показывает товары, которых нет в корзине для пользователя

#php #mysql #laravel #laravel-query-builder

#php #mysql #laravel #laravel-конструктор запросов

Вопрос:

Я хочу показывать товары каждому пользователю на основе товаров в таблице корзины. Если пользователь добавил товар в корзину, то он не должен отображаться в списке товаров только для этого пользователя. Я смог показать уведомление, если товар находится в корзине, но не смог скрыть его, если он уже есть в таблице корзин.

Вот мой CartsController:

 // Check if item exists
    $status = Cart::where('user_id', Auth::user()->id)
                                ->where('product_id', $product_id)->first();

    if(isset($status->user_id) amp;amp; isset($request->product_id)){

        session()->flash('warning', 'You already have this item in cart.');

    }
  

В моей таблице корзин есть user_id и product_id.

Как мне создать проверку, вошли ли в таблицу carts идентификаторы пользователя и product_id, чтобы скрыть товары?

Я показываю все товары в табличном формате пользователю с помощью добавить в корзину.

Отношение пользователя к корзине:

 public function user()
{
    return $this->belongsTo(User::class);
}
  

Соотношение товаров в корзине:

 public function product()
{
    return $this->belongsTo(Product::class);
}
  

Ответ №1:

 //Get IDs for products in cart
$productsInCart = Cart::where('user_id',auth()->user()->id)->pluck('product_id')->toArray();
//Get products not in cart
$productsToShow = Product::whereNotIn('id',$productsInCart)->get();
  

Комментарии:

1. Я хочу скрыть товары, которые уже есть в таблице корзины для пользователя. Если в таблице carts идентификатор пользователя совпадает с идентификатором зарегистрированного пользователя, а product_id совпадает с идентификатором продукта в таблице carts для этого зарегистрированного пользователя. Товар больше не будет отображаться этому пользователю.

2. Спасибо! Я не совсем сделал то, что вы упомянули, но я смог решить свою проблему. Я выбрал все идентификаторы товаров из таблицы корзин, где идентификатор пользователя соответствует зарегистрированному пользователю, и отправил его в whereNotIn. Пожалуйста, отредактируйте свой ответ, и я приму его.

3. Рад, что смог помочь