Laravel - 存储和恢复所有会话的数据

时间:2015-11-22 17:08:02

标签: session laravel laravel-5

我使用laravel会话和数据库。我想知道如何恢复为所有会话存储的信息,它意味着在会话表中的所有行之间。

我正在开发一个预订室系统。我以这种方式使用会话:

第一步: 用户搜索所有可用房间的特定日期。将显示包含所有可用房间的列表。

第二步: 用户选择房间后,会将其重定向到付款表单。

在用户选择房间的第一步中,房间ID存储在会话中。

我想做的事情是这样的: 会话用于存储用户选择的所有房间,以防两个或更多用户在同一时段内寻找同一房间。因此,在第一个用户付费之前,房间不能用于搜索其他用户。

Laravel有一个有效负载列,它存储所有键和值,但它只是一个字母和数字序列。

1 个答案:

答案 0 :(得分:1)

  

Laravel有一个有效负载列,它存储所有键和值,但它只是一个字母和数字的序列

当您调用\Session::put('foo', 'bar')时,将值es添加到保存所有数据的关联数组中。如果您使用的是数据库驱动程序,则laravel将数组序列化以将其存储为字符串。这就是为什么你只能看到很多文字。因此,使用会话将非常复杂,因为您必须重新序列化/反序列化。

如何阻挡房间?嗯,有很多方法可以做到这一点,一切都取决于你的架构。例如,您可以将选定的房间存储在其他表中5分钟(足够的时间来支付)。让我们说你可以使用两个表:

selected_rooms
------------------
number | expire_at

和...

rooms
number | beds | busy
  1. 用户搜索一个很酷的房间。系统必须忽略所有引用selected_rooms表尚未过期的房间。

  2. 当用户选择一个房间时,您将其存储在selected_rooms房间桌面,expire_at值为now + 5 minutes

  3. 当用户付费时,您可以将其从selected_rooms中删除。如果用户只是注销或只是离开电脑,那没关系,因为5分钟后房间再次可用