在会话Laravel中添加子对象

时间:2018-11-07 21:13:05

标签: laravel session laravel-5 session-variables

我正在使用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'];

1 个答案:

答案 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;

我希望这种方法将有助于实现您想要的。