Laravel collection->push() 無法正常工作

我想收集产品并推送到会话购物车。


$product= Product::find(1);

$product2= Product::find(2);


session(['cart' => collect($product)]);


session(['cart' => session('cart')->push($product2)])

这是我的输出,其中包含一些虚拟数据。


{

  "0": {

    "id": 2,

    "sku": "SKU914",

    "price": 1.0,

    "special_price": 0.91,

    "weight": 763,

    "barcode": "0434120288572",

    "created_at": "2020-01-31 14:39:53",

    "updated_at": "2020-01-31 14:39:53"

  },

  "id": 1,

  "sku": "SKU579",

  "price": 22.8,

  "special_price": 19.14,

  "weight": 478459,

  "barcode": "1390377688",

  "created_at": "2020-01-31 14:34:59",

  "updated_at": "2020-01-31 14:34:59"

}

我推送的第二个产品($product 2)在阵列之外。我该怎么做才能让它像"0": {}, "1": {}


扬帆大鱼
浏览 89回答 3
3回答

DIEA

只需将$product放在数组中即可。session(['cart' => collect([$product])]);session(['cart' => session('cart')->push($product2)]);或者只是推动session(['cart' => session('cart')->push($product)]);session(['cart' => session('cart')->push($product2)]);

慕勒3428872

根据您的要求,只需像这样使用session(['cart' => collect($product)]);$card1[] = session('cart');$card1[] = collect($product1);session(['cart' => $card1])$card2[] = session('cart');$card2[] = collect($product2);session(['cart' => $card2])或者您可以使用 whereIn()$products = Product::whereIn("id",[1,2])->get()->toArray();session(['cart' => $products])或者可以使用array_mergesession(['cart' => collect($product)]);$cart = array_merge(session('cart'),collect($product2));session(['cart' => $cart])

慕容森

您不需要合并任何内容2 查询会很慢,所以最好只运行一个查询$Ids = [1,2];if(true) { // can add any condtion here   array_push(3); // if you need to push new id}$product= Product::whereIn("id",$Ids)->get();session(['cart' => $product]);您可以应用条件whereIn()
打开App,查看更多内容
随时随地看视频慕课网APP