作为我网站的一部分,我正在尝试使用 Symfony2 和 Doctrine2 创建标记(民间文学)系统。
我正在按照以下文档中的表格和查询示例来创建我的教义实体:http ://dablog.ulcc.ac.uk/wp-content/uploads/2007/12/tagging_folksonomy.pdf
当我尝试将 MySQL 查询(在文档中给出)转换为 Doctrine Query Builder 查询时,innerJoins 出现错误。下面的例子:
来自文档的 MySQL 查询:
SELECT tag_text
, COUNT(*) as num_tags
FROM Tag2Post t2p
INNER JOIN Tags t
ON t2p.tag_id = t.tag_id
GROUP BY tag_text;
我的教义查询生成器查询:
$qb = $em->createQueryBuilder()
->select('t.tag_text, COUNT(*) as num_tags')
->from('CompanyWebsiteBundle:Tag2Post', 't2p')
->innerJoin('CompanyWebsiteBundle:Tags', 't', 'ON', 't2p.tag_id = t.id')
->groupBy('t.tag_text')
;
$tags = $qb->getQuery()->getResult();
错误信息:
[2/2] QueryException: [Syntax Error] line 0, col 112: Error: Expected Doctrine\ORM\Query\Lexer::T_WITH, got 'ON'
[1/2] QueryException: SELECT t.tag_text, COUNT(*) as num_tags FROM CompanyWebsiteBundle:Tag2Post t2p INNER JOIN CompanyWebsiteBundle:Tag t ON t2p.tag_id = t.id GROUP BY t.tag_text
当我直接在数据库上运行 MySQL 查询时,它可以工作!