php - Doctrine 2 WHERE IN 子句使用实体集合

标签 php symfony orm doctrine-orm doctrine

我正在尝试在 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/

相关文章:

php - 简单的 PHP/MySQL 语法错误,告诉 "check manual?"

php - PHP 如何使用 header() 函数设置 HTTP header ?

javascript - 在更改第一个 SELECT 时添加第二个 SELECT (PHP/AJAX) 无法正常工作

php - 在PHP中操作DOM

ajax - 如何在 Symfony 2.0 AJAX 应用程序中将 Doctrine 实体编码为 JSON?

Symfony2 : accessing entity fields in Twig with an entity field type

java - JPA 3 向连接注解

php - IF 语句 + Jquery 弹出窗口?

php - 我应该从哪里开始正确理解 ORM 的概念

python - Storm ORM 和自动生成表