您使用的是哪个 Doctrine 版本,因为在 Doctrine2 中您应该使用 QueryBuilder 类,并且您应该使用类名和属性,而不是 DQL 中的表名和字段。因此,您应该加入类字段名称,而不是表字段名称。
innerJoin('t.request_details', 'r') // where request_details is a propery on Tester
此外,您不需要连接它们的位置 (where(t.id = r.tester_id)),这是由 Doctrine 管理的,并且只要实体正确映射就可以工作。
你也不需要 from 部分中的 request_details r,Doctrine 也会处理这个问题。
此外,在 from 中使用类名,而不是表名。
编辑(在getResults()之前忘记了getQuery()):最后你的查询看起来像这样:
$queryBuilder = EntityManager::create(//em options)->createQueryBuilder();
$queryBuilder->select('t.department')
->from('Tester', 't')
->innerJoin('t.request_details', 'r') // request details is a propery on Tester, that maps to RequestDetails
->where('r.request_id = ?1')
->setParameter(1, 123);
Doctrine 将负责将其转换为 SQL 并加入该事物。最后,您还需要获取这些东西:
$departments = $queryBuilder->getQuery()->getResult();
编辑:对于学说 1,这样的事情应该有效:
$q = Doctrine_Query::create()
->select('t.department')
->from('Tester t')
->innerJoin('t.request_details r') // request details is a propery on Tester, that maps to RequestDetails
->where('r.request_id = ?', 123);
$depts = $q->fetchArray();
我对 Doctrine 1 不是很熟悉,因此请查看以下内容以获取更多信息:
http ://docs.doctrine-project.org/projects/doctrine1/en/latest/en/manual/dql-doctrine-query-language .html