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方法一起使用