doctrine创建具有2个关联的查询

时间:2013-01-14 21:51:49

标签: symfony doctrine query-builder

我有这个实体

发布

 /**
 * @ORM\ManyToOne(targetEntity="SottoCategoria")
 * @ORM\JoinColumn(name="sottocategoria_id", referencedColumnName="id", nullable=false)
 */
public $sottocategoria;

SottoCategoria

 /**
 * @ORM\ManyToOne(targetEntity="Categoria")
 * @ORM\JoinColumn(name="categoria_id", referencedColumnName="id", nullable=false)
 */
public $categoria;

Categoria

/**
 * @ORM\OneToMany(targetEntity="SottoCategoria", mappedBy="categoria")
 */
protected $sottocategorie;

我该如何进行此查询?我需要找到来自categoria的所有帖子

post.sottocategoria.categoria

 $query = $repository->createQueryBuilder('p')
                    ->where('p.enabled = :enabled AND p.sottocategoria.categoria = :categoria')
                    ->setParameters(array(
                        'enabled' => true,
                        'categoria' => $idCat,
                    ))

我不能使用p.categoria,因为我与post

没有关系

我的关系是发布 - > sottocategoria - > categoria 所以我的问题是如何从categoria获得所有帖子?我必须使用innerjoin?

1 个答案:

答案 0 :(得分:0)

$ em = $ this-> getDoctrine() - > getEntityManager();             $ query = $ em-> createQuery(                             'SELECT p,g,c FROM AcmeBlogBu​​ndle:post p JOIN p.sottocategoria g JOIN g.categoria c WHERE p.enabled =:enabled AND g.categoria =:categoria ORDER BY p.id DESC')

解决