我使用laravel会话和数据库。我想知道如何恢复为所有会话存储的信息,它意味着在会话表中的所有行之间。
我正在开发一个预订室系统。我以这种方式使用会话:
第一步: 用户搜索所有可用房间的特定日期。将显示包含所有可用房间的列表。
第二步: 用户选择房间后,会将其重定向到付款表单。
在用户选择房间的第一步中,房间ID存储在会话中。
我想做的事情是这样的: 会话用于存储用户选择的所有房间,以防两个或更多用户在同一时段内寻找同一房间。因此,在第一个用户付费之前,房间不能用于搜索其他用户。
Laravel有一个有效负载列,它存储所有键和值,但它只是一个字母和数字序列。
答案 0 :(得分:1)
Laravel有一个有效负载列,它存储所有键和值,但它只是一个字母和数字的序列
当您调用\Session::put('foo', 'bar')
时,将值es添加到保存所有数据的关联数组中。如果您使用的是数据库驱动程序,则laravel将数组序列化以将其存储为字符串。这就是为什么你只能看到很多文字。因此,使用会话将非常复杂,因为您必须重新序列化/反序列化。
如何阻挡房间?嗯,有很多方法可以做到这一点,一切都取决于你的架构。例如,您可以将选定的房间存储在其他表中5分钟(足够的时间来支付)。让我们说你可以使用两个表:
selected_rooms
------------------
number | expire_at
和...
rooms
number | beds | busy
用户搜索一个很酷的房间。系统必须忽略所有引用selected_rooms
表尚未过期的房间。
当用户选择一个房间时,您将其存储在selected_rooms
房间桌面,expire_at
值为now + 5 minutes
。
当用户付费时,您可以将其从selected_rooms
中删除。如果用户只是注销或只是离开电脑,那没关系,因为5分钟后房间再次可用