php - 在 Phalcon 中执行查询时出错,但查询在 phpMyAdmin 上有效

标签 php mysql phalcon

我有以下表结构

        headline
        is_user_article
        is_approved
        updated_date
        created_date  

我想以这样的方式对记录进行排序

  1. 如果 is_approved = 0,则按 is_user_article DESC、updated_date DESC、created_date DESC 排序
  2. 如果 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/

相关文章:

php - 引用 - 如何在 SimpleXML 中处理命名空间(名称中带有冒号的标签和属性)?

php - 如何将每个选中的复选框添加到 MySQL 中的单行

mysql - SELECT * FROM Table WHERE Col1, Col2 BETWEEN a 和 b

php - phalcon 依赖下拉列表人口与 jquery

php - 使用 PHP 和 PHPWord 将 HTML 代码转换为文档

php - 在 MySQL 中插入数组值

Mysql - 将一个数字分成单独的列,然后按每个单独的列求和

mysql - 我可以在Y托管提供商提供的文件托管中使用X提供商的MYSQL数据库吗

php - Sql 运算符 "and"和 "or"无法正常工作

php - 如何在 phalcon 中将 "group by"、 "having"查询从 mysql 转换为 mongodb