Symfony2でQueryBuilderを使用してこのクエリを実行するにはどうすればよいですか?
SELECT um.id, sv.patentgroup_id, pm.portfolio_id, pp.id
FROM sv_patents sv
LEFT JOIN pm_patentgroups pm ON sv.patentgroup_id = pm.id
LEFT JOIN pm_portfolios pp ON pm.portfolio_id = pp.id
LEFT JOIN um_users um ON pp.user_id
エンティティクラスの関連付けは、次のように定義されます。
SvPatentsで私は持っています
/**
* @var PmPatentgroups
*
* @ORM\ManyToOne(targetEntity="PmPatentgroups")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="patentgroup_id", referencedColumnName="id")
* })
*/
private $patentgroup;
PmPatentgroupsで私は持っています
/**
* @var PmPortfolios
*
* @ORM\ManyToOne(targetEntity="PmPortfolios")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="portfolio_id", referencedColumnName="id")
* })
*/
private $portfolio_id;
PmPortfoliosで私は持っています
/**
* @var UmUsers
*
* @ORM\ManyToOne(targetEntity="UmUsers")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $user;
これを試しましたが、テーブルの結果全体が結合が適切に機能していないように見えます
$repository = $this->getDoctrine()->getRepository('MunichInnovationGroupBundle:SvPatents');
$qb = $repository->createQueryBuilder('sv')
->leftJoin('sv.patentgroup','pm')
->leftJoin('pm.portfolio_id','pp')
->leftJoin('pp.user','um')
->getQuery();
$patents = $qb->getArrayResult();
私はSymfony2とDoctorine2にまったく慣れていません。ドキュメント全体を読みましたが、そのような複雑な例を見つけることができませんでした。実際、querybuilderがクエリを作成する方法に少し混乱しています。簡単な言葉で少し説明していただければ幸いです
前もって感謝します