我有两个实体。首先称为“状态”:
<?php
class Status {
protected $id;
protected $type = null; // standarized type of status (f.e. "locked", "disabled")
protected $value = true; // true or false (value of status)
protected $change_reason = null;
protected $changed_by;
protected $changed_at;
}
我已清除注释以提高可读性。
第二个称为例如。帐户。因为帐户不是唯一使用状态的实体,所以状态和任何其他“可状态”实体(我认为)的关系应该是多对多的。对于 Account 会有连接表 account_status 等。
另外一种状态仅属于一个实体。
这一切都适用于该配置,但我真的不知道如何检索具有最新状态的帐户列表。
我编写了一个 SQL 查询来检索实际状态:
SELECT * FROM (
SELECT t.type, t.value
FROM status AS t
ORDER BY t.changed_at DESC
) AS t1 GROUP BY t1.type
我的问题是:
- 这个想法完全正确吗?
- 如何检索具有所有最新状态的帐户列表?
对不起我的英语不好。
编辑:我只想获取一个帐户,加入其最新状态,然后通过以下方式简单地获取它们: $task -> getStatus('highlighted') 以获取“突出显示”类型的最新(最年轻)状态的值
EDIT2:理想的仍然能够按给定类型的状态进行排序和过滤