PHP корзина с laravel — количество выпусков

Я работаю над проектом сайта Laravel-Shopping, и у меня есть проблемы с количеством товара в корзине.
Я относительно новичок в Laravel, поэтому все становится сложнее для меня …
Дело в том, что я не могу по-настоящему эффективно (и искать) моделировать продукты.

Но когда я нажимаю кнопку «Добавить в корзину», эта функция запускается:

public function cart(Product $product){

$cart = session()->get('cart');

// If Cart is empty, add a new array in the session
if ($cart == []) {
$cart[] = $product;
session()->put('cart', $cart);
}else{
// else if not empty, loop the cart and look if similar product is in the cart.
for ($i = 0; $i <= count($cart); $i++) {

$array_cart = json_decode($cart[$i], true);
if ($product->id == $array_cart["id"]) {
$array_cart["id"] += 1;
}else{
$cart[] = $product;
session()->put('cart', $cart);
}
}
}

return back();
}

Продукты являются объектами, и я не уверен, как выполнить цикл, чтобы найти идентификатор продукта, совпадающий с идентификатором массива продуктов. Я попытался json_decode (), чтобы увидеть, превратится ли это в массив, но я могу ошибаться, потому что когда я возвращаю значение, это был тот же самый «объект». Например, один товар в корзине может выглядеть так:

    [{"id": 4,
"name": "HP Desktop",
"description": "Ordinary desktop",
"category": "Desktop",
"price": 1,
"views": 63,
"created_at": "2016-04-11 14:42:58",
"updated_at": "2016-05-27 09:12:59"}]

2

Решение

Вам нужно запустить цикл foreach, он будет проходить по всем объектам.

Так, например, вы можете запустить этот код в controller чтобы получить id:

foreach($products as $product) {
dump($product->id);
}

Или вы можете использовать это в blade view,

@foreach($products as $product)
dump($product->id);
@endforeach

Я предлагаю вам добавить quantity в вашем объекте, чем вы можете обновить quantity и рассчитать цену.

public function cart(Product $product){

$cart = session()->get('cart');

// If Cart is empty, add a new array in the session
if ($cart == []) {
$cart[] = $product;
session()->put('cart', $cart);
}else{
// else if not empty, loop the cart and look if similar product is in the cart.
foreach ($cart as $product_item) {
if ($product->id == $product_item["id"]) {
$product_item["quantity"] += 1;
$found = true;
}
}

if($found !== true) {
$cart[] = $product;
session()->put('cart', $cart);
}
}

return back();
}

Надеюсь, это работает!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]