#php #mysql #phalcon
#php #mysql #phalcon
Вопрос:
У меня следующая структура таблицы
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, отсортировать по 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,