1
實體「資產」與「logEntries」關聯。 每個資產可能有0..N個日誌條目。Symfony2,doctrine2&querybuilder:選擇關聯的最後實體(如果可用)
每個日誌條目的一部分是一個字段(或屬性)「狀態」。 每個資產的當前狀態在其最近的日誌條目中定義。 如果沒有與資產相關聯的日誌條目,則其狀態是未知的。
目前我正在計算每種狀態的資產。一個狀態的例子是:「可用」。
的問題是:
- 或者資產被計數超過一次,如果他們在過去交替的狀態值(他們幾乎都這樣做)
- 或者,我收到錯誤,因爲我在尋找每項資產的最近的日誌條目,但有些資產沒有日誌條目和DQL聚集函數失敗
我想下面的代碼:
$qb = $this->_em->createQueryBuilder();
$qb->select('COUNT(a)')
->from('AppAssetBundle:Asset', 'a')
->leftJoin('a.logEntries', 'l')
->where('l.status = '.$status_id)
->andWhere('l.id = MAX(l.id)')
;
return $qb->getQuery()->getSingleScalarResult();
的錯誤是:
SQLSTATE[HY000]: General error: 1111 Invalid use of group function
通過->having()
更換->andWhere()
也不能工作。
有誰知道如何獲得最近的協會實體,如果有?
如果沒有相關的領域,我想我的整個查詢返回0,而不是一個錯誤:)
有一個createdAt字段,但我是否抓住最高ID或最近的日期對問題沒有影響。問題是:如何獲取查詢中的最新條目?如果最新的條目不是我正在查找的狀態,或者由於沒有關聯條目而不存在,COUNT()應該返回0。 –