次の Doctrine 2 STI Vehicle エンティティには、Car と Bike という名前の 2 つの子クラスがあり、車両テーブルのアイテムを車両タイプ別にカウントする必要があります。(例; テーブルの要約: 車 3 台、バイク 5 台..)
/**
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"V" = "Vehicle", "C" = "CarEntity", "B" = "BikeEntity"})
* @ORM\Table(name="vehicles", uniqueConstraints={@ORM\UniqueConstraint(name="discr_type_name",columns={"type","name"})})
*/
class Vehicle {
...
}
だから、私は次のDQLクエリを試しましたが、どれもうまくいきませんでした:
SELECT v, TYPE(v) as vtype, count(v.id) as cnt FROM Vehicle v GROUP BY TYPE(v);
SELECT v, count(v.id) as cnt, TYPE(v) as vtype FROM Vehicle v GROUP BY vtype;
SELECT v, count(v.id) as cnt, TYPE(v) as vtype FROM Vehicle v GROUP BY TYPE(vtype);
クエリ例外:
[Syntax Error] line 0, col 10: Error: Expected known function, got 'TYPE'
もう一つの方:
[Semantical Error] line 0, col 83 near 'TYPE()': Error: Cannot group by undefined identification or result variable
何か案は?(Doctrine のバージョンは 2.3 です)