作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想在 Symfony 2.3 中使用 Doctrine 来运行这个查询。但似乎 Doctrine 不理解 CASE 声明。任何人都可以帮忙吗?提前谢谢!
SELECT max(id) id, name
FROM cards
WHERE name like '%John%'
GROUP BY name
ORDER BY CASE WHEN name like 'John %' THEN 0
WHEN name like 'John%' THEN 1
WHEN name like '% John%' THEN 2
ELSE 3
END, name
最佳答案
如果你正在使用 createQueryBuilder 那么你可以使用 like
$query->addSelect("(CASE WHEN name like 'John %' THEN 0 WHEN name like 'John%' THEN 1 WHEN name like '% John%' THEN 2 ELSE 3 END) AS HIDDEN ORD ");$query->orderBy('ORD', 'DESC');
请注意,您必须具有“HIDDEN”。
您也可以使用 doctrine native 查询。
关于php - 如何在 Doctrine2 (Symfony2) 中按案例排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20488863/
我是一名优秀的程序员,十分优秀!