【问题标题】:How to schedule a request with Symfony?如何使用 Symfony 安排请求?
【发布时间】:2018-02-20 15:27:49
【问题描述】:

我正在为一辆租用自行车的人创建一个网站,他们将自行车用于不同的地方。我选择使用 Symfony 4。

在我的数据库(MySql)中,简而言之,有:

  • 表格 KIND_BIKE(id, name, quantity...)

  • 一个表 RENTER_PLACE(id, name, adress, quantity...)

  • BIKE 表(id​​、kind_bike_id、renter_place_id....)

  • 和其他表....

我还有一个表 DISPONIBILITIES 包含以下列:id、bike_id、date_begin_rent、date_end_rent、state (1->temporary_taked , 2-confirmed)。

当访客租用自行车时,它会在第一步中选择租用日期。此时,为租金创建了一个 ID (id_reservation)。 接下来它将可以选择它的自行车。访客将自行车添加到其购物车后,会在表 DISPONIBLITIES 中创建一行,其中包含 id_reservation 和状态 1。

如果访问者确认其租金,则为该租金创建的 DISPONIBILITIES 中的所有行都将更新(状态 1 到状态 2)。

但我不知道要插入哪些行,并且访问者没有确认其租金并离开其网络导航器......

我的问题是 Symfony 是否能够在行创建后的 15 分钟内安排一个请求,该请求将删除状态等于 1 并具有良好 id_reservation 的行?

如果可能的话,我将使用什么 symfony 组件来做到这一点?

【问题讨论】:

  • 请给我们看一些代码。 SO 不会像这样工作或带来您面临的特定问题,适合本网站的remit
  • 您可以使用Console Component 和每分钟执行一次的cron job 来检查是否插入了超过15 分钟的未确认预订
  • @JulienBourdic 你的awser,它非常有趣!我必须研究一些信息,但谢谢!如果它有效,我不会原谅添加已解决的标签! ;)

标签: php mysql symfony


【解决方案1】:

您应该只将完整数据保存在数据库中。中间预订步骤应该简单地保存在访问者的会话中。在该过程结束时,您将持久保存在数据库中。我认为您应该创建一个“BookingManager”服务,您可以在控制器中调用该服务以在用户进行时保存在会话中。

【讨论】:

  • 这不是回答他的问题。为了避免库存问题,他可能不得不在 DB 结账时拦下一辆自行车。
  • 谢谢你,但你的想法并没有解决我的问题......因为自行车是保存在会话中而不是在我的数据库中......自行车可以被其他访客租用。
  • 另一种解决方案:您可以在自行车实体中添加日期时间字段。当用户开始预订过程时,侦听器会使用当前日期对其进行更新。如果日期时间字段早于您定义的超时时间,则可以预订自行车。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 2013-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多