我有以下表结构
headline
is_user_article
is_approved
updated_date
created_date
我想以这样的方式对记录进行排序
- 如果 is_approved = 0,则按 is_user_article DESC、updated_date DESC、created_date DESC 排序
- 如果 is_approved = 1,则按更新日期 DESC、创建日期 DESC 排序
这意味着我首先想要那些用户提交的文章 (is_user_article=1) 且未批准的文章 (is_approved=0),然后是按更新日期和创建日期排序的其余记录。
我有以下查询
<?php
$phql = "SELECT headline, is_user_article, created_date, updated_date, is_approved
FROM NewsRoom\Articles\Models\Articles ORDER BY
CASE is_approved WHEN 0 THEN is_user_article END DESC,
CASE WHEN is_approved = 1 THEN updated_date END DESC,
updated_date DESC,
created_date DESC";
$articles = $this->modelsManager->executeQuery($phql);
?>
问题
当我使用 Phalcon 的 modelManager
执行时,查询不起作用。我收到“语法错误,is_approved=1 附近出现意外标记”
但是,如果我在 phpMyadmin 中执行此查询,将 NewsRoom\Articles\Models\Articles
替换为实际表名 tbl_articles
,则它可以完美运行。
任何人都可以帮我解决这个问题吗?
最佳答案
更改您的 SQL
CASE WHEN is_approved = 1 THEN updated_date END DESC,
至
CASE is_approved WHEN 1 THEN updated_date END DESC,
关于php - 在 Phalcon 中执行查询时出错,但查询在 phpMyAdmin 上有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40174736/