2016-05-21 2 views
0

Так выглядит моя коллекция прямо сейчас.Работа с методами сбора laravel в корзине

[{"id":"1","quantity":1},{"id":"2","quantity":1}] 

Что я могу сделать, чтобы соответствовать id и изменить quantity до 2. Это для корзины покупок.

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

[{"id":"1","quantity":2},{"id":"2","quantity":1}] 

ответ

0

transform на корзину коллекция.

$id = 1; 
$cart->transform(function ($item) use ($id) { 
    if ($item['id'] == $id) { 
     $item['q']++; 
    } 
    return $item; 
}); 
1

Вы можете использовать метод сбора transform. Он выполняет итерацию элементов в коллекции, что позволяет изменять значения.

Предположим, что ваша коллекция объектов хранится в $someCollection. Вы можете сделать это:

$someCollection->transform(function ($item, $key) use ($id) { 
    if ($item->id == $id) { 
     $item->quantity++; 
    } 
    return $item; 
}); 

Это увеличит количество на единицу для элемента с идентификатором, который вы передаете в $ ид

https://laravel.com/docs/5.2/collections#method-transform

Смежные вопросы