如何管理Laravel 5中的事件

如何管理Laravel 5中的事件,laravel,session,events,listener,provider,Laravel,Session,Events,Listener,Provider,我试图与Laravel一起管理会话/事件,但我不确定是否真正理解 我的数据库中存储了一个过期日期为的对象。我想在当前时间等于到期日期时更改他的状态。我是否必须使用侦听器/事件或会话变量或其他什么 我的购物车也有同样的问题。我想在15分钟不活动后清空购物车(我正在使用Crinsane购物车) 有什么想法吗 问候, 杰里米你可以为此而创作。检查所有过期记录并更新状态: Model::where('status', 0) ->where('expiration_date', '<

我试图与Laravel一起管理会话/事件,但我不确定是否真正理解

我的数据库中存储了一个过期日期为的对象。我想在当前时间等于到期日期时更改他的状态。我是否必须使用侦听器/事件或会话变量或其他什么

我的购物车也有同样的问题。我想在15分钟不活动后清空购物车(我正在使用Crinsane购物车)

有什么想法吗

问候,

杰里米

你可以为此而创作。检查所有过期记录并更新状态:

Model::where('status', 0)
     ->where('expiration_date', '<', Carbon::now())
     ->update(['status' => 1]);
您可以为此创建。检查所有过期记录并更新状态:

Model::where('status', 0)
     ->where('expiration_date', '<', Carbon::now())
     ->update(['status' => 1]);

这听起来像是一个可以通过使用Laravel本身轻松解决的问题

你需要两份工作:

  • 第一个需要每天触发(我假设),并运行一个查询来选择experiation日期过期的所有对象。(查询请参见Alexey的答案)

  • 第二个需要检查购物车是否已停用超过15分钟,如果是这样,则将其删除:


Cart::where('updated_at',这听起来像是一个问题,可以通过使用Laravel本身轻松解决

你需要两份工作:

  • 第一个需要每天触发(我假设),并运行一个查询,以选择experiation日期过期的所有对象。(有关查询,请参阅Alexey的答案)

  • 第二个需要检查购物车是否已停用超过15分钟,如果是这样,则将其删除:


Cart::where('updated_at',很可能您首先需要一个cron。关于清空Cart,不确定您为什么需要它,但是您可以在路由周围包装一个中间件,检查Cart的最后一个活动是否>(time-(60*15))很可能您首先需要一个cron。关于清空购物车,不确定您为什么需要它,但是您可以在路由周围包装一个中间件,检查购物车的最后一个活动是否为>(时间-(60*15))非常感谢您的回复。它应该可以很好地工作。但是如果我想自动检测状态的变化,有可能吗?因为每分钟运行一个任务可能会很繁重?@JérémyAublanc您不能自动执行此操作。您可以对每个请求进行检查,但运行计划任务会更好。非常感谢对于这个响应。它应该工作得很好。但是如果我想自动检测状态的变化,有可能吗?因为每分钟运行一个任务可能会很繁重?@JérémyAublanc你不能自动完成这项任务。你可以做的是对每个请求进行检查,但运行计划任务要好得多。对于购物车来说,是吗当然可以?因为“计时器”应该在用户添加第一个项目时运行,并且在15分钟未付款购物车后为空。使用会话变量(为每个用户存储)不是更好吗。我真的对这种情况感到困惑…可能会使用事件说“我只是在购物车中添加了一个项目…”?这取决于您希望在您的网站上创建何种行为。您希望删除一个长期处于非活动状态的购物车,还是当用户购物时间过长时删除?如果我需要您,我将运行一个每日查询,删除较旧的购物车超过24小时,因此您永远不会删除用户当时使用的购物车。我只想在购物车过期前15分钟订购,因为我销售有限的产品。我不想让用户在购物车中保留商品太长时间。你知道我的意思吗?我唯一能想到的是,当用户连接到购物车时,我会进行日志记录购物车是最后一个活动的(比如加载一个新页面,您可以将其与购物车一起存储在数据库中一个名为last_activity_at的字段中)。接下来,我将创建一个每分钟运行一次的任务,并选择上次活动的值超过15分钟前的购物车,然后将其删除。我相信这是最快速、最干净的解决方案。对于购物车,您确定我可以这样做吗?因为“计时器”应该在用户添加第一个项目时运行,并且在15分钟未付款购物车后为空。使用会话变量(为每个用户存储)不是更好吗。我真的对这种情况感到困惑…可能会使用事件说“我只是在购物车中添加了一个项目…”?这取决于您希望在您的网站上创建何种行为。您希望删除一个长期处于非活动状态的购物车,还是当用户购物时间过长时删除?如果我需要您,我将运行一个每日查询,删除较旧的购物车超过24小时,因此您永远不会删除用户当时使用的购物车。我只想在购物车过期前15分钟订购,因为我销售有限的产品。我不想让用户在购物车中保留商品太长时间。你知道我的意思吗?我唯一能想到的是,当用户连接到购物车时,我会进行日志记录购物车是最后一个活动的(比如加载一个新页面,您可以将其与购物车一起存储在数据库中一个名为last_activity_at的字段中)。接下来,我将创建一个每分钟运行一次的任务,并选择上次活动的值超过15分钟的Cart,然后将其删除。我相信这是最快速、最干净的解决方案。