在Phalcon中执行查询时出错,但查询适用于phpMyAdmin

时间:2016-10-21 10:51:30

标签: 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,则按updated_date排序DESC,created_date DESC
  3. 这意味着我希望这些文章最初是用户提交的(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替换tbl_articles执行此查询,则它可以正常运行。

    任何人都可以帮我这个。

1 个答案:

答案 0 :(得分:1)

更改SQL
 CASE WHEN is_approved = 1 THEN updated_date END DESC,

 CASE is_approved WHEN 1 THEN updated_date END DESC,