Laravel collection->push() 无法正常工作
Laravel collection->push() not working properly
我想收集产品并推送到会话购物车。
$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])
或者您可以使用 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])
你不需要合并任何东西
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()
条件
只需将 $product 放入数组中即可。
session(['cart' => collect([$product])]);
session(['cart' => session('cart')->push($product2)]);
或者直接推送
session(['cart' => session('cart')->push($product)]);
session(['cart' => session('cart')->push($product2)]);
我想收集产品并推送到会话购物车。
$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])
或者您可以使用 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])
你不需要合并任何东西
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()
条件
只需将 $product 放入数组中即可。
session(['cart' => collect([$product])]);
session(['cart' => session('cart')->push($product2)]);
或者直接推送
session(['cart' => session('cart')->push($product)]);
session(['cart' => session('cart')->push($product2)]);