次のフィールドを持つこのエンティティがあります。
Andrei\StatisticsBundle\Entity\Visit:
type: entity
table: visits
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
counter:
type: integer
createdAt:
type: datetime
column: created_at
manyToOne:
visitor:
targetEntity: Andrei\StatisticsBundle\Entity\Visitor
inversedBy: visits
joinColumn:
name: visitor_id
referencedColumnName: id
website:
targetEntity: Andrei\StatisticsBundle\Entity\Website
inversedBy: visits
joinColumn:
name: website_id
referencedColumnName: id
country:
targetEntity: Andrei\StatisticsBundle\Entity\Country
inversedBy: visits
joinColumn:
name: country_id
referencedColumnName: id
そして、単純な選択条件を実行し、以下のように website_id データベース列に where を追加したいのですが、うまくいきません。website_id は現在、Visit エンティティのフィールドとして表示されており、むしろ Website オブジェクトのプロパティであると考えていますが、これらのタイプのクエリを実行する方法がわかりません。
$em = $this->getDoctrine()->getManager();
$repository = $em->getRepository('AndreiStatisticsBundle:Visit');
$qb = $repository->createQueryBuilder('v')
->select('SUM(v.counter) AS views, v.createdAt AS day')
->where('v.website.id = :website_id')
->setParameter('website_id', 3)
->groupBy('v.createdAt');
$visits = $qb->getQuery()->getScalarResult();