Ошибка при выполнении запроса в Phalcon, но запрос работает на phpMyAdmin

#php #mysql #phalcon

#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

Это означает, что сначала мне нужны те статьи, которые отправлены пользователем (is_user_article = 1) и не одобрены (is_approved = 0), затем остальные записи, упорядоченные по дате обновления и дате создания.

У меня следующий запрос

 <?php
        $phql = "SELECT headline, is_user_article, created_date, updated_date, is_approved 
            FROM NewsRoomArticlesModelsArticles 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, заменяя NewsRoomArticlesModelsArticles фактическое имя таблицы tbl_articles , он работает безупречно.

Кто-нибудь может мне помочь в этом.

Ответ №1:

Измените свой SQL с

  CASE WHEN is_approved = 1 THEN updated_date END DESC,
  

Для

  CASE is_approved WHEN 1 THEN updated_date END DESC,