Doctrine orm 教义2多对多不在
我有两个实体:税务和分类 一个税种可以有许多类别,一个类别可以包含在许多税种中 这就是我在税务实体中定义categories属性的方式Doctrine orm 教义2多对多不在,doctrine-orm,Doctrine Orm,我有两个实体:税务和分类 一个税种可以有许多类别,一个类别可以包含在许多税种中 这就是我在税务实体中定义categories属性的方式 /** * @ORM\ManyToMany(targetEntity="\My\Bundle\Entity\Category") * @ORM\JoinTable(name="taxes_categories", * joinColumns={@ORM\JoinColumn(name="tax_id", referencedColumnName
/**
* @ORM\ManyToMany(targetEntity="\My\Bundle\Entity\Category")
* @ORM\JoinTable(name="taxes_categories",
* joinColumns={@ORM\JoinColumn(name="tax_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")}
* )
**/
protected $categories;
我试图获取的是与特定税收无关的所有类别
在SQL中,我将执行以下操作
SELECT * FROM category WHERE id NOT IN (SELECT category_id FROM taxes_categories WHERE tax_id = ?)
如何使用Doctrine进行这样的查询?您不必担心联接表。在分类和税务之间进行连接将完成这项工作。我将使用。诸如此类:
$qb = $entityManager->createQueryBuilder();
$qb->select( array( 'C' ) )
->from( '\My\Bundle\Entity\Category', 'C' )
->join( 'C.taxes', 'T' )
->where( $qb->expr()->neq( 'T.id', ':id' ) )
->setParameter( 'id', $id );
您询问获取所有类别,因此我将从类别实体开始工作。我假设您在其中定义了税务属性