【发布时间】:2017-01-12 20:52:50
【问题描述】:
使用status_history 表将保存entries 中特定记录的状态修改日期和时间,我试图找到最简单的方法来获取当前状态,AKA,状态最近的日期。
例如考虑以下内容:status_history
+----+----------+------------+-----------+
| id | entry_id | status | timestamp |
+----+----------+------------+-----------+
| 1 | 1 | Processing | 15:05:09 |
| 2 | 1 | In Review | 15:05:18 |
| 3 | 1 | Complete | 15:05:26 |
+----+----------+------------+-----------+
当然,我们的条目:entries
+----+--------+
| id | title |
+----+--------+
| 1 | Foobar |
+----+--------+
我如何使用 DQL 检索特定条目的最新状态(技术上是当前状态),无需维护 latest_status_id 列我的Entry 实体?
考虑调用$entry->getCurrentStatus() 将返回"Complete"。但是,如果我们对该条目有大量状态记录,则加载所有状态的第二次查询可能会导致性能下降。
注意:在this article 中,他们使用额外列方法来描述它,使用并发锁定机制。我想避免这种方法,除非这是正确的方法,因为我们试图不让每个表都有双重关系(status_history.entry_id 和 entry.latest_history_id)。
【问题讨论】:
-
如何获取
$entry? -
当然使用 DQL。但是,查询本身就是我想要弄清楚的,因为这个想法是它也带来了它的状态的最后一行。
-
如果查询是您想要弄清楚的,我建议您将其添加到帖子中。可能会降低人们在帮助或朝着正确方向轻推的障碍
-
谢谢。我编辑了问题。
-
- 您想在同一个查询中检索条目和 status_history 吗? - 您是否在第一个查询中检索多个条目? - 你想检索整个实体还是只检索字段?
标签: php mysql doctrine-orm doctrine