我使用以下查询来检索所有关键字记录,其中属于id=2的组记录的关键字记录首先出现。这似乎工作正常。
SELECT k.*, g.groupid, kg.keywordid
FROM keywords k
JOIN keywords_groups kg ON k.keywordid=kg.keywordid
JOIN groups g ON kg.groupid=g.groupid
ORDER BY kg.groupid = 2 DESC;
但是,我正在尝试将其转换为DQL,但不断收到以下错误:
[Syntax Error] line 0, col 198: Error: Expected end of string, got '='
似乎我的 DQL 中有问题的行是:
->orderBy($keywordQB->expr()->eq('g.groupid', ':keyword_group_id'), 'ASC')
在我看来,Doctrine 不支持这一点,我想不出在 DQL 中做到这一点的替代方法。
感谢您的帮助。
教义支持这一点。 试试这个
$query = Doctrine_Query::create()
->select('k.*, g.groupid, kg.keywordid')
->from('keywords k')
->innerJoin('keywordsGroups kg ON k.keywordid=kg.keywordid')
->innerJoin('Groups g ON kg.groupid=g.groupid')
->orderBy('kg.groupid = 2 DESC');
$result = $query->execute(array(), Doctrine::HYDRATE_ARRAY);
return $result;