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

Error in executing query in Phalcon but query works on phpMyAdmin

我有以下 table 结构

        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. 排序
  3. 如果 is_approved = 1,按 updated_date 降序排列,created_date 降序排列

这意味着我首先想要那些用户提交(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's modelManager 执行时,查询不起作用。我得到 "Syntax error, unexpected token WHEN near is_approved=1"

但是,如果我在 phpMyadmin 中执行此查询,将 NewsRoom\Articles\Models\Articles 替换为实际的 table 名称 tbl_articles,它会完美运行。

谁能帮我解决这个问题。

将你的SQL从

 CASE WHEN is_approved = 1 THEN updated_date END DESC,

 CASE is_approved WHEN 1 THEN updated_date END DESC,