Handle Auth User в корзине - PullRequest
0 голосов
/ 28 мая 2019

Я написал код для корзины покупок и элементов корзины в сеансе, теперь я хочу обрабатывать ее отдельно. Auth user Cart

Вот Cart.php

namespace App;


class Cart
{
    public $items=null;
    public $totalQty = 0;
    public $totalPrice = 0;

    public function __construct($oldCart)
    {
        if($oldCart){
            $this->items = $oldCart->items;
            $this->totalQty = $oldCart->totalQty;
            $this->totalPrice = $oldCart->totalPrice;
        }
    }

    public function add($item,$id){
        $storedItems = ['qty'=>0,'price'=>$item->price,'item'=>$item];
        if ($this->items){
            if (array_key_exists($id,$this->items)){
                $storedItems = $this->items[$id];
            }
        }
        $storedItems['qty']++;
        $storedItems['price'] = $item->ucp * $storedItems['qty'];
        $this->items[$id] = $storedItems;
        $this->totalQty++;
        $this->totalPrice += $item->ucp;
    }

} 

Вот контроллер корзины

namespace App\Http\Controllers;

use App\Cart;
use App\Models\CartDetail;
use App\Models\Order;
use App\Models\Product;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Session;

class CartController extends Controller
{
    public function addToCart(Request $request)
    {

        $id = $request->product_id;

        $product = Product::find($id);
        $oldCart = Session::has('cart') ? Session::get('cart') : null;
        $cart = new Cart($oldCart);
        if ($request->get_quantity) {
            while ($request->get_quantity > 0) {
                $cart->add($product, $product->id);
                $request->get_quantity--;
            }
        } else {
            $cart->add($product, $product->id);
        }

        $request->session()->put('cart', $cart);



        return Session::get('cart')->totalQty;


    }

   }

Где я работаю как пользователь auth? В этом сценарии, когда один пользователь добавляет товар в корзину, этот товар также отображается для другого пользователя :(, пожалуйста, дайте решение

1 Ответ

0 голосов
/ 28 мая 2019

Вы можете сделать его уникальным с помощью userId.Что-то вроде ниже

$request->session()->put('cart'.$userId, $cart);

, когда вам нужно получить эту корзину, возьмите ее, как показано ниже.

return Session::get('cart'.$userId)->totalQty;

Теперь позвольте мне объяснить вам.

Я просто объединяюсь userId с cart, поэтому он становится уникальным.когда первый пользователь вошел в систему, и мне нужно получить его корзину.так что я просто прямо внизу.

Session::get('cart'.Auth::id())->totalQty;

вот так вы получите корзину только для соответствующего пользователя.

Вы также можете использовать некоторую упаковку Laravel.Дайте мне знать, если он вам нужен в разделе комментариев.

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