首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用laravel跟踪购物车表的sessionID

如何用laravel跟踪购物车表的sessionID
EN

Stack Overflow用户
提问于 2016-03-26 11:08:14
回答 2查看 3.8K关注 0票数 3

我在我的项目中使用php laravel 5.2。我想设计带有数据库表的购物车(表名是购物车)。cart表有列名session_id来确定每个用户的购物车。

问题是:

  1. 当用户登录时,会话id将发生更改,而我将丢失该用户的购物车(以及sessionId将更改的其他条件)。
  2. 当数据库中仍然存在会话过期的购物车时,它也不再被使用,我如何才能弄清楚这一点并删除这类购物车呢?

或者其他有数据库的购物车设计的想法?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-26 12:04:56

没有理由使用会话ID作为购物车所有者的标识符。处理购物车的逻辑非常简单,它等同于以下内容:

  • 当没有登录的用户(我们称其为来宾)访问您的网站时,Laravel会自动创建会话。
  • 如果该来宾用户向购物车添加了某些内容,那么添加到购物车中的项/产品将存储在会话中。没有理由将客户的购物车信息存储在数据库中,因为该会话是短暂的,只有当客户在您的网站上活动时才需要。一旦来宾用户离开站点(即浏览器关闭或会话到期),您就无法(实际地)识别同一个用户,如果他回来了(因此所用的术语是来宾)。如果您想让客人下订单,您可以使用会话购物车信息来下订单(客人仍然不需要数据库)。
  • 只有在处理cart登录了的注册用户时,才有必要将购物车信息存储在数据库(您的表)中。在这种情况下,将购物车项链接到用户的标识符是user_id,因为用户只能有一个购物车。因此,cart表可以非常简单,如:
代码语言:javascript
复制
+---------+------------+
| user_id | product_id |
+---------+------------+
  • 存储user_idproduct_id实际上就是处理购物车项目所需要的全部,因为它只是一个列表,它引用了users表中存储详细信息的用户,以及将详细信息存储在products表中的产品。

当然,当来宾用户将一些项添加到购物车(此时存储在会话中)时,如果该来宾决定在会话购物车中拥有内容时登录,那么在登录过程成功后添加(更准确地说是同步)这些项与数据库可能是有意义的。

因此,如果用户在上次登录时数据库购物车中已经有了一些产品,那么来自当前会话购物车的新产品将被添加到旧产品中。虽然这是您的选择,如果您想同步这些项目,或者只是完全覆盖它们,只保留新的购物车项目。

因此,按照上述指导原则,无需从数据库中删除cart项,因为数据库中只有与注册用户链接的cart项,这些用户下次登录时需要留在那里才能使用。

票数 11
EN

Stack Overflow用户

发布于 2016-03-26 16:31:44

你可以依靠饼干:

https://laravel.com/docs/5.2/requests#cookies

或者更好的一个购物车包是为拉拉做的:

https://github.com/Crinsane/LaravelShoppingcart

这个包是我在Laravel 5电子商务实现中使用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36234548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档