0
私は2つの実体があります。サービスとDoctrine QueryBuilderと1対多の関係ドクトリン:他の表の挿入時に更新列
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;
}
とのセッションどのように私は$score
で新しいSession
Service
エンティティ毎回の$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();