【问题标题】:doctrine: is there a way to use associated entity in findBy学说:有没有办法在 findBy 中使用关联实体
【发布时间】:2013-07-24 08:39:37
【问题描述】:

我有一个实体“员工”,它与一个或多个“经理”实体相关联。 因此,我在员工实体中使用连接表和关联,如下所示:

/**
* @ManyToMany(targetEntity="manager_entity")
* @JoinTable(name="manager_employees",
* joinColumns={@JoinColumn(name="emp_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="manager_id", referencedColumnName="id", unique=true)}
* )
*/
protected $managers;

这已经在工作了。但现在我想检索特定经理的所有员工。 因此我问是否有可能做这样的事情:

$mgr = $this->em->getRepository ( 'Entities\manager' )->findOneBy ( array (
                "alias" => $this->get('alias'));
// only pseudo code - i know that $managers is a list of managers and $mgr cannot be compared to that
$empList = $this->em->getRepository('Entities\employee')->findBy(array("managers" => $mgr));

【问题讨论】:

    标签: doctrine-orm doctrine associations entity findby


    【解决方案1】:

    将这样的函数添加到您的存储库中:

    public function findByManager($managerId)
    {
        return $this->getEntityManager()
            ->createQueryBuilder()
            ->from('employee', 'e')
            ->innerJoin('e.managers m')
            ->where('m.Id = :managerId')
            ->setParameter('managerId', $managerId)
            ->getQuery()
            ->getResult();
    }
    

    然后只需使用:

    $employee = $repository->findByManager($manager->getId());
    

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-04
      • 2011-07-19
      相关资源
      最近更新 更多