我试图理解没有关联的联接。我看到人们在哪里取得成功的一切都是有意义的。当我将其应用于查询时,它会出错。
$query_builder = $this->getEntityManager()->createQueryBuilder();
$query_builder->select('er', 'es')
->from('EmployeeRegister', 'er')
->leftJoin(
'EmployeeStatus',
'es',
\Doctrine\ORM\Query\Expr\Join::ON,
'er.eid = es.eid'
)
->where('er.eid = :eid')
->setParameter('eid', '0999999');
$result = $query_builder->getQuery()->getResult();
这会导致错误:
PHP Fatal error: Uncaught Doctrine\ORM\Query\QueryException: SELECT er, es FROM EmployeeRegister er LEFT JOIN EmployeeStatus es ON er.eid = es.eid WHERE er.eid = :eid in /Documents/PHPStormProjects/ax/_vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php:43
Stack trace:
#0 /Documents/PHPStormProjects/ax/_vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(491): Doctrine\ORM\Query\QueryException::dqlError('SELECT er, es F...')
#1 /Documents/PHPStormProjects/ax/_vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(991): Doctrine\ORM\Query\Parser->semanticalError('line 0, col 19 ...', Array)
#2 /Documents/PHPStormProjects/ax/_vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1734): Doctrine\ORM\Query\Parser->validateAbstractSchemaName('EmployeeRegiste...')
#3 /Documents/PHPStormProjects/ax/_vendor/doctrine/orm/lib/Doctrine/ORM/Query/Parser.php(1584): Doctrine\ORM\Query\Parser->RangeVariableDeclaration()
#4 /Us in /Documents/PHPStormProjects/ax/_vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php on line 65
任何建议都会很有帮助。仍在学习该学说。
答案 0 :(得分:0)
如果有人可以解释这在教义2中的含义或原因。当我将联接更改为使用WITH而不是ON时,它将起作用。
$query_builder->select('er', 'es')
->from('EmployeeRegister', 'er')
->leftJoin(
'EmployeeStatus',
'es',
\Doctrine\ORM\Query\Expr\Join::WITH,
'er.eid = es.eid'
)
->where('er.eid = :eid')
->setParameter('eid', '0999999');
在什么情况下ON起作用?我尝试了一些随机操作,似乎只有ON才能起作用。