为什么不期望我的收藏结构(不是我需要的)

时间:2018-01-20 17:51:52

标签: php laravel

我的购物车类有以下方法:

public function add($productId) {
        $product = Product::where('id', $productId)->first();
        if (!$product) {
            return false;
        }
        if ($this->items->has($productId)) {
            $this->items->$productId->qty++;
        } else {
            $this->items->push([$productId => [
                    'name' => $product->title,
                    'price' => $product->price,
                    'is_sale' => $product->is_sale,
                    'sale_price' => $product->sale_price,
                    'sale_percent' => $product->sale_percent,
                    'can_use_promocode' => $product->can_use_promocode,
                    'qty' => 1,
                ]
            ]);
        }
        $this->save();
        return true;
    }

但是在控制器的dump($cart)上,我得到了这个:

+items: Collection {#176 ▼
    #items: array:1 [▼
      0 => {#171 ▼
        +"2": {#164 ▼
          +"name": "101 роза"
          +"price": 4999
          +"is_sale": 0
          +"sale_price": null
          +"sale_percent": null
          +"can_use_promocode": 1
          +"qty": 1
        }
      }      
    ]
  }

但我需要:

+items: Collection {#176 ▼
    #items: array:1 [▼
      2 => {       
          +"name": "101 роза"
          +"price": 4999
          +"is_sale": 0
          +"sale_price": null
          +"sale_percent": null
          +"can_use_promocode": 1
          +"qty": 1        
      }      
    ]
  }

在这种情况下,我认为$this->items->push([$productId => ...]会将key => value对推送到集合,但集合会创建自己的对,而我的对将进入集合对。 (idk如何正确描述,但我想你理解我:))

1 个答案:

答案 0 :(得分:2)

请改用put()方法:

->put($key, $data)
  

put方法在集合中设置给定的键和值