【发布时间】:2015-01-31 23:41:21
【问题描述】:
我有两个实体 - Lawyer 和 Category。它们与多对多关联有关。假设示例律师有 3 个类别。我想创建一个按类别数组搜索律师的函数,它应该只返回具有数组中所有类别的律师。
class Lawyer {
//...
/**
* @ORM\ManyToMany(targetEntity="Dees\KancelariaBundle\Entity\Category")
* @ORM\JoinTable(name="lawyers_has_categories",
* joinColumns={@ORM\JoinColumn(name="lawyer_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="category_id", referencedColumnName="id")}
* )
*
* @var ArrayCollection
*/
protected $categories = null;
//...
}
class Category {
//...
/**
* @ORM\Column(length=255, nullable=true)
*
* @var string
*/
protected $name;
//...
}
public function searchLawyers(array $categories) {
$queryBuilder = $this->createQueryBuilder('lawyer')
->join('lawyer.categories', 'category');
$queryBuilder->andWhere("category.name = :category1");
$queryBuilder->setParameter("category1", "First category");
$queryBuilder->andWhere("category.name = :category2");
$queryBuilder->setParameter("category2", "Second category");
//...
//won't work, return null, but lawyer with these categories exists.
}
我怎样才能实现这样的目标?
【问题讨论】:
标签: php symfony doctrine-orm doctrine-query