簡體   English   中英

如何將會話值存儲區放入數據庫?

[英]How to put session value store into database?

我想檢索會話數組並放入其他模型,但是拋出`

在數組上調用成員函數pluck()

我使用的控制器:

$orders =  $request->session()->get('order');
$order = new Order();
$order->school_id = $orders->pluck('school_id');
$order->order_date = $orders->pluck('order_date');
$order->time_slot = $orders->pluck('time_slot');

如何訪問會話數據並放入其他模型?

這是我在dd()會話時得到的響應:

array:1 [▼
  0 => array:3 [▼
    "school_id" => "4"
    "order_date" => "11/25/2017"
    "time_slot" => "10am - 8pm"
  ]
]

這樣嘗試

$orders =  $request->session()->get('order');
print_r($orders);

如果您獲得學校ID數組的訂單,則可以通過$ orders ['school_id'];獲得; 如果您獲得了std對象,則可以通過$orders->school_id;檢索它$orders->school_id; 按照print_r(orders)輸出使用,然后可以通過

如果std對象::

$order = new Order();
$order->school_id = $orders[0]->school_id;
$order->order_date = $orders[0]->order_date;
$order->time_slot = $orders[0]->time_slot;
$order->save();

如果數組::

$order = new Order();
$order->school_id = $orders[0]['school_id'];
$order->order_date = $orders[0]['order_date'];
$order->time_slot = $orders[0]['time_slot'];
$order->save();

我會使用array_get助手。

https://laravel.com/docs/5.5/helpers#method-array-get

array_get($orders, 'school_id');

此外,如果會話中不存在該值,則可以將回退用作第三個參數。

會話將所有數據保存在數組中,而不保存在集合中。 函數pluck()僅可用於集合。

嘗試做array_get($orders, 'school_id'); 正如Marc已經提到的那樣,或者只是$request->session()->get('order')['school_id'];

這取決於您如何將其存儲到會話中,因此,如果使用了push,則它將存儲為數組。

無論如何,請將您的代碼更改為以下內容:

$orders =  $request->session()-> pull('order',$defaultOrdersArrayCanBeHere);
$order = new Order();
$order->school_id = $orders['school_id'];
$order->order_date = $orders['order_date'];
$order->time_slot = $orders['time_slot'];

更新:

您是否按以下方式將其推送到會話: session()->push('order', $order);

哪里:

$order = [
'school_id'=> $schoolId;
'order_date'=> $orderDate;
'time_slot'=> $timeSlot;
]

在數組上調用成員函數pluck()

您的$orders變量是一個數組,因此不能使用pluck。 您可以執行$order['key']來訪問其值。 或如其他建議那樣,使用輔助函數array_get

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM