我只是设法找到SQL查询以我想要的方式检索数据。现在我尝试将其放入Doctrine2查询中,但我收到了消息
Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got ','
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
获得Doing a WHERE .. IN subquery in Doctrine 2的启发,产生了以下Doctrine 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);
不幸的是,这个错误消息并不能让我知道该做什么,谷歌搜索它也没有带来任何启发。我对Doctrine很新,在我坚持SO帖子的版本之后,我不知道该怎么做。有什么想法吗?
乔纳森
答案 0 :(得分:0)
也许这个解决方案不是很好,但是它解决了类似的问题。
<button onclick = "window.plugins.socialsharing.share (data.title)"> message only </ button>