Добавить дочерний объект в сеансе Laravel

Я использую 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);

В более поздний момент, когда пользователь добавляет элемент в объект «порядок» выше, я хочу создать дочерний объект родительского «порядка» выше. например, о создании объекта ниже, но что лучше всего добавить в сеанс, поддерживая отношения?

$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 ответ


Как сказал @ 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;

Надеюсь, этот метод поможет достичь того, чего вы хотите.


Есть идеи?

10000