В корзине все еще отображается продукт, который был удален Laravel - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть эта функция, которая позволяет пользователю добавлять товар в корзину, но если продукт удален в панели администратора, он все равно отображается в корзине, есть идеи, как удалить продукт в корзине, который был удален в панели администратора?

Поэтому я попытался проверить, существует ли идентификатор или нет, и я получил ошибку Call to a member function isEmpty() on integer

Checkout Controller

   public function store(Request $request)
 {
    foreach(session('cart')  as $productId =>$item);
    $product = product::find($productId);
    if(!$productId->isEmpty())
    //Insert into orders table
    $order = Order::create([
        'shipping_email' => $request->email,
        'shipping_name' => $request->name,
        'shipping_city' => $request->city,
         'user_id'=> auth()->user()->id,

    ]);

    //Insert into order product table
    if ($order) {
        $total = 0;
        foreach(session('cart')  as $productId =>$item) {
           if (empty($item)) {
               continue;
           }
           $product = product::find($productId);
           OrderProduct::create([
            'order_id' => $order->id ?? null,
            'product_id' => $productId,
           // $products=DB::table('products')->where('id',$id)->get();
            'quantity' => $item['quantity'],
            'Subtotal' =>$item['price'] * $item['quantity'],
            'total' => $total += $item['price'] * $item['quantity'],
            'price' => $product->price,
            'name' => $product->name,
            'info' => $product->info,
        ]);

Ответы [ 2 ]

0 голосов
/ 01 ноября 2019

Вы должны обновлять значения, сохраненные в вашем сеансе, после каждой операции удаления. В Laravel (согласно их официальной документации) вы можете сделать это следующим образом.

    $request->session()->forget('removed_product_id',$id);

Или, если вы хотите использовать фасад фасада

    Session::forget('removed_product_id',$id);

Вызывайте этот оператор после каждой операции удаления. Вы можете вызвать их в функции удаления контроллера.

0 голосов
/ 01 ноября 2019

Вы удаляете продукт из панели администратора, но не обновляете сеанс, в котором этот продукт все еще находится в массиве. Попробуйте, возможно, получить в сессии только идентификаторы продуктов и в контроллере получить данные из БД с этим идентификатором и следующим проходом для просмотра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...