在symfony2中的Doctrine2协会
我有个问题,使用symfony2,条令 首先,我的模型和关系: 表:在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) (我知道用户和公司之间可能存在很多这种情况,但出于其他原因,我选择了一种额外的就业模式) 问题:在项目/索引页面
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()
。