我正在使用Laravel 5.4。
我正在创建一个非常基本的商店应用。因此,您可以选择产品,将它们添加到购物篮中,然后继续购物或结帐。
我有一个称为“订单设置”的阶段,已登录的用户定义了某些参数,然后将其存储到与对象order
的会话中。例如:
$order = new Order();
$order->company_id = $data['company_id'];
$order->customer_id = $data['customer_id'];
$order->delivery_address_id = $data['delivery_address_id'];
$order->total_cost = 0.0;
$order->limit_remaining = $limitRemaining;
$order->delivery_cost = $customer->delivery_cost;
$order->minShipDate = $customer->minDespatchDate();
$order->deliveryOptions = DeliveryOptions::where('deleted', 0)->pluck('name', 'id');
$request->session()->put('order', $order);
稍后,当用户将项目添加到上方的“ order”对象时,我想创建上方的父“ order”的子对象。例如构建下面的对象的方法,但是在保持联系的同时在会话中附加此对象的最佳方法是什么?
$orderDetail = new OrderDetail();
$orderDetail->stock_code = $orderItem['stock_code'];
$orderDetail->quantity = floatval($orderItem['quantity']);
$orderDetail->cost = floatval($productSetup->price);
$orderDetail->line_price = $productSetup->price * $orderItem['quantity'];
答案 0 :(得分:0)
正如@JoséA.Zapata在评论中所说,您不需要显式关系,您只需为$ orderDetail创建另一个会话变量并在其中存储订单详细信息数组即可。您还需要一个额外的会话变量,以将对象的索引存储在数组中。
$orderDetailsArray= array();
$index=0;
//Now store the $orderDetail object in the array.
$orderDetailsArray[index]=$orderDetail; //order detailDetail object which you have created
//Initiliaze Sessions for orderdetails and index
Session::put('orderDetails',$orderDetailsArray);
Session::put('index',$index);
现在,当您存储下一个orderDetail对象时,首先必须检索orderDetails会话并在其中添加新的orderdetail。
//increment the old index
$newIndex=Session::get('index');
$newIndex++;
$orderDetailsArray=Session::get('orderDetails');
$orderDetailsArray[$newIndex]=$newOrderDetailObject;
我希望这种方法将有助于实现您想要的。