我正在尝试在 Doctrine 2 中构建一个查询,以查找与任何给定 VacancyWorkingHours
实体相关的所有 Vacancy
实体。
Vacancy
实体如下所示:
/**
* Vacancy
*
* @ORM\Table(name="vacancy")
* @ORM\Entity(repositoryClass="JaikDean\CareersBundle\Entity\VacancyRepository")
*/
class Vacancy
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var VacancyWorkingHours
*
* @ORM\ManyToOne(targetEntity="VacancyWorkingHours", inversedBy="vacancies")
* @ORM\JoinColumn(name="vacancy_working_hours_id", referencedColumnName="id")
**/
private $workingHours;
/* Other fields and methods are inconsequential */
}
我的查询当前如下所示,但由于 where 子句而未返回任何结果。在此示例中,$workingHours
是一个 Doctrine\Common\Collections\ArrayCollection
实例,包含多个 VacancyWorkingHours
实体
$q = $this->createQueryBuilder('v')
->select('v')
->andWhere('v.workingHours IN (:workingHours)')
->setParameter('workingHours', $workingHours->toArray());
;
最佳答案
一个 pull request我所做的这个已经被合并到 Doctrine ORM 2.5 中,所以你现在可以简单地这样做:
$q = $this->createQueryBuilder('v')
->select('v')
->andWhere('v.workingHours IN (:workingHours)')
->setParameter('workingHours', $workingHours);
;
最新版本的 Doctrine 现在允许集合参数,并且会自动使用每个集合条目的主键。
关于php - Doctrine 2 WHERE IN 子句使用实体集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18536190/