Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Doctrine2子查询导致错误:预期的条令\ORM\Query\Lexer::T#u FROM,get'';_Php_Mysql_Doctrine Orm_Subquery_Dql - Fatal编程技术网

Php Doctrine2子查询导致错误:预期的条令\ORM\Query\Lexer::T#u FROM,get'';

Php Doctrine2子查询导致错误:预期的条令\ORM\Query\Lexer::T#u FROM,get'';,php,mysql,doctrine-orm,subquery,dql,Php,Mysql,Doctrine Orm,Subquery,Dql,我只是设法找到了SQL查询,以我想要的方式检索数据。现在我尝试将其放入Doctrine2查询中,但我得到了信息 错误:预期的条令\ORM\Query\Lexer::T\u FROM,get',' SQL查询类似于: SELECT * FROM somedb WHERE (config_id,version) IN ( SELECT config_id, MAX(version) FROM somedb WHERE projectid = 1 GROUP BY

我只是设法找到了SQL查询,以我想要的方式检索数据。现在我尝试将其放入Doctrine2查询中,但我得到了信息

错误:预期的条令\ORM\Query\Lexer::T\u FROM,get','

SQL查询类似于:

SELECT * 
FROM somedb 
WHERE (config_id,version) IN 
    ( SELECT config_id, MAX(version)
    FROM somedb
    WHERE projectid = 1
    GROUP BY config_id
    ) 
AND project_id = 1
受到启发,QueryBuilder产生了以下理论

$qb = $this->getEntityManager()->createQueryBuilder();
$qb2 = $this->getEntityManager()->createQueryBuilder();

//define subquery
$qb2->select(['somedb.configId', 'MAX(somedb.version)']);
$qb2->from('DataObjects\Entities\someDB', 'somedb');
$qb2->where('somedb.template = :variable');
$qb2->groupBy('somedb.configId');
$qb2->setParameter("variable" , $variable);

//define mainquery
$qb->select('somedb');
$qb->from('DataObjects\Entities\someDB', 'somedb');
$qb->where($qb->expr()->in(['somedb.configId', 'somedb.version'], $qb2->getDQL()));
$qb->andWhere('somedb.template = :variable');
$qb->setParameter("variable" , $variable);

return $qb->getQuery()->execute(null , Query::HYDRATE_ARRAY);
不幸的是,这条错误消息并没有给我一点提示,谷歌搜索也没有给我任何启示。我对教义很陌生,在我坚持了SO帖子的版本后,我不知道该怎么办。有什么想法吗


乔纳森

也许这个解决方案不是很好,但它解决了一个类似的问题

// ...   
//define subquery
$qb2->select('CONCAT(somedb1.configId, \'\' ,MAX(somedb1.version)');
$qb2->from('DataObjects\Entities\someDB', 'somedb1');
$qb2->where('somedb1.template = :variable');
$qb2->groupBy('somedb1.configId');


//define mainquery
$qb->select('somedb');
$qb->from('DataObjects\Entities\someDB', 'somedb');
$qb->where($qb->expr()->in('CONCAT(somedb.configId, \'\', somedb.version)', $qb2->getDQL()));

$qb->setParameter("variable" , $variable);