在symfony2中的Doctrine2协会

在symfony2中的Doctrine2协会,symfony,doctrine-orm,Symfony,Doctrine Orm,我有个问题,使用symfony2,条令 首先,我的模型和关系: 表: 1.company (has many employements, has many projects) 2.user (has many employements) 3.project (has one company) 4.employement (has one user, has one company) (我知道用户和公司之间可能存在很多这种情况,但出于其他原因,我选择了一种额外的就业模式) 问题:在项目/索引页面

我有个问题,使用symfony2,条令

首先,我的模型和关系:

表:

1.company (has many employements, has many projects)
2.user (has many employements)
3.project (has one company)
4.employement (has one user, has one company)
(我知道用户和公司之间可能存在很多这种情况,但出于其他原因,我选择了一种额外的就业模式)

问题:在项目/索引页面上,我想显示所有项目,来自所有公司,该用户所在的公司,由创建于。正如您所看到的,一个用户可以同时受雇于更多的公司

在我的控制器中,我得到了如下所有项目:

$projects = $this->getDoctrine()
    ->getRepository('AcmeDemoBundle:Projects')
    ->findAll();
我想解决办法可能是:

按用户查找雇员

通过雇佣关系找到公司

获得该公司的项目


有什么想法吗?

您的解决方案似乎是正确的,但您可能需要创建一个带有连接的自定义存储库类,以明确地告诉Doctrine获取关系(无代理)

看到和

例如:

use Doctrine\ORM\EntityRepository;

class EmployementRepository extends EntityRepository
{
    public function findWithJoins($user) {
        $qb = $this->createQueryBuilder('e');
        $qb->leftJoin('e.company', 'e')
            ->addSelect('e')
            ->where('e.user = :user')
            ->setParameter('user', $user);
        return $qb->getQuery()->getResults();
    }
}

谢谢你,劳伦特!您的解决方案只提供了用户的雇用人数。如何通过这些员工获取所有项目?使用repository方法获取所有员工后,您可以对其进行迭代并使用类似于
getcompanys()
,然后对公司进行迭代并使用
getProjects()