Php Laravel系列->;按钮()工作不正常

Php Laravel系列->;按钮()工作不正常,php,laravel,laravel-collection,Php,Laravel,Laravel Collection,我想收集产品并推送到会话购物车 $product= Product::find(1); $product2= Product::find(2); session(['cart' => collect($product)]); session(['cart' => session('cart')->push($product2)]) 这是我的输出和一些虚拟数据 { "0": { "id": 2, "sku": "SKU914", "price":

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

$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"
}
我推送的第二个产品($product2)在阵列之外。
我应该怎么做才能使它像
“0”:{},“1”:{}

根据您的要求,像这样使用就可以了

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

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

$card2[] = session('cart');
$card2[] = collect($product2);
session(['cart' => $card2])
或者您可以使用其中()

$products = Product::whereIn("id",[1,2])->get()->toArray();
session(['cart' => $products])
或者可以使用数组\u合并

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

$cart = array_merge(session('cart'),collect($product2));
session(['cart' => $cart])

您不需要合并任何内容

2查询速度较慢,因此最好只运行一个查询

$Ids=[1,2];
如果(true){//可以在这里添加任何条件
数组_push(3);//如果需要推送新id
}
$product=product::其中(“id”,$Ids)->get();
会话(['cart'=>$product]);

您可以应用
where()
条件

只需将$product放入一个数组中

session(['cart' => collect([$product])]);
session(['cart' => session('cart')->push($product2)]);
或者只是推一下

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

您不需要使用
集合
,它已经是一个集合。将
where
更改为
where
,其中我想单独使用它,因为产品是一个接一个地添加的user@BlackLotus现在检查您可以推送任意数量的id,但SQL查询将是单一的,fastI希望单独使用,因为产品是由用户逐个添加的,所以您是否选中了array\u merge?array\u merge无法与collect方法一起使用