Doctrine orm Symfony 2&;学说2:实体之间的复杂关系
我有两个实体。首先称为“状态”: 我的问题是:Doctrine orm Symfony 2&;学说2:实体之间的复杂关系,doctrine-orm,many-to-many,Doctrine Orm,Many To Many,我有两个实体。首先称为“状态”: 我的问题是: 这个想法完全正确吗 如何检索具有所有最新状态的帐户列表 对不起,我的英语很差 编辑: 我只想获得一个帐户,加入它的最新状态,然后简单地通过:$task->getStatus('highlighted')获得“highlighted”类型的最新(最年轻)状态的值 EDIT2: 理想情况是仍然能够根据给定类型的状态对任务进行排序和筛选{ //这是所有状态的列表 受保护的$statusHistory; 受保护状态; 公共函数构造(){ $this->st
类任务{
//这是所有状态的列表
受保护的$statusHistory;
受保护状态;
公共函数构造(){
$this->statusHistory=newarraycollection();
}
公共函数addStatus($status){
$this->statusHistory[]=$status;
$this->lastStatus=$status;
}
公共函数getStatusHistory(){
返回$this->statusHistory;
}
公共函数getLastStatus(){
返回$this->lastStatus;
}
}
//获取状态列表的步骤
$task->getStatusHistory();
//要获取最后一个状态,它将返回状态对象,而不是集合
$task->getLastStatus();
当您需要集合中的第一个/最后一个元素时,这或多或少是一种标准方法,获取整个集合可能是一项开销。您可以为每个帐户添加lastStatus关系每个帐户可以有多个状态,例如“锁定”、“过期”等。。。更好的例子是“已关闭”、“突出显示”任务。您可以为每个帐户添加lastStatus关系每个帐户可以有多个状态,例如“已锁定”、“已过期”等。。。更好的例子是“关闭”、“突出显示”任务,这不是我需要的。我只想获得一个帐户,加入它的最新状态,然后通过:$task->getStatus('highted')获得最新状态的值,类型为“highted”。这不是我需要的。我只想获得一个帐户,加入它的最新状态,然后简单地通过:$task->getStatus('highlighted')获得一个类型为“highlighted”的最新状态值。
<?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;
}
SELECT * FROM (
SELECT t.type, t.value
FROM status AS t
ORDER BY t.changed_at DESC
) AS t1 GROUP BY t1.type