0
在INSERT,UPDATE專欄中,我有2個實體:服務和會話與一個一對多的關係原則:在其他表
class Service{
/**
* @var int
*
* @ORM\Column(name="avg_score", type="integer")
*/
private $avgScore;
/**
* @ORM\OneToMany(targetEntity="Session", mappedBy="service")
*/
private $sessionList;
}
class Session{
/**
* @ORM\ManyToOne(targetEntity="Service", inversedBy="sessionList")
* @ORM\JoinColumn(name="service_id", referencedColumnName="id")
*/
private $service;
/**
* @var int
*
* @ORM\Column(name="score", type="integer", nullable=true)
*/
private $score;
}
教義的QueryBuilder我怎麼可以更新Service
實體每次新Session
與$score
的$avgScore
被建造?
這就是我試圖做的:
$qb = $this->getDoctrine()->getEntityManager()->createQueryBuilder();
$q = $qb->update('AppBundle:Service', 's')
->join('AppBundle:Session', 'ss')
->addSelect('avg(ss.score) as score_avg')
->groupBy('ss.service')
->set('s.avgScore', 'score_avg')
->where('s.id = ?1')
->setParameter(1, $service->getId())
->getQuery();
$q->execute();