php - 通知查询返回新结果或更新结果的有效方法

标签 php mysql postgresql symfony doctrine-orm

我有一个使用 postgresql 的 symfony2 Web 应用程序。我的(简化的)应用程序显示具有 3 个功能的产品 - 价格、可用日期和重量。用户可以根据这 3 个参数搜索产品并将查询保存到他们的个人资料中。当他们点击个人资料中的链接时,查询就可以轻松运行。

我想添加新功能,以便在用户保存的查询结果发生更改时向用户发送电子邮件。如果列出了新产品并符合其参数,或者匹配其查询的现有产品发生了更改(例如价格更改或可用日期更改),则可能会发生这种情况。

我认为我需要在 Symfony2 中创建一个新实体,其中包含所有产品属性以及查询 ID,因为每个查询可能有很多产品。接下来,我需要创建一个在每次添加或更改产品时运行的事件,这样我就可以向用户发送电子邮件并指定更改的内容。

也许为了简化这一点,我可以向产品实体添加一个 UpdatedAt 字段,而不是在新实体中包含所有产品属性,我只会保存产品 ID,并且只会告诉用户产品已更改。

有没有比创建一个新实体来存储每个已保存查询的结果更好的方法?我可以添加代码来显示我正在做的事情,但感觉我正处于一个主要的 fork 点,可以使用许多不同的可能性,甚至可能不涉及创建新实体。

最佳答案

我通过按照 CBroe 的建议添加更多功能来解决这个问题。我添加了一个事件标志,现在在进行重要更改时保留产品实体的历史记录。这样既可以简单地查询活跃产品,又可以及时查询购买回来的产品。我现在开始添加一个计划任务以按设定的时间间隔运行,而不是出于性能目的立即发送通知,但这是一个单独的问题。 感谢您使用事件标志的想法以及保留历史记录的建议,因为这将在以后使用。

关于php - 通知查询返回新结果或更新结果的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23686712/

相关文章:

SQL:如何检查外键是否真的改变了

django - 索引错误 : tuple index out of range

javascript - laravel5删除,如何将2个参数传递给DELETE操作

php - 如何隐藏显示在 HTML 上的回显结果?

php - 两个表的 SQL 计数

mysql - 在同一个表上进行联接的慢聚合查询

php - 日期未使用 laravel 保存到 mySQL 数据库

sql - 在 PostgreSQL 中,如何根据分类列中每个级别的比例从表中随机抽样?

php - 外键约束

php - 使用 EasyApns 添加推送通知