为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
扬帆大鱼 2022-09-03 17:29:32
我想收集产品并推送到会话购物车。$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": {}
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

只需将$product放在数组中即可。


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

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

或者只是推动


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

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


查看完整回答
反对 回复 2022-09-03
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

根据您的要求,只需像这样使用


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_merge


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


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

session(['cart' => $cart])


查看完整回答
反对 回复 2022-09-03
?
慕容森

TA贡献1853条经验 获得超18个赞

您不需要合并任何内容


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()


查看完整回答
反对 回复 2022-09-03
  • 3 回答
  • 0 关注
  • 83 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信