在 Phalcon 中执行查询时出错,但查询在 phpMyAdmin 上有效
Error in executing query in Phalcon but query works on phpMyAdmin
我有以下 table 结构
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 降序排列,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,
我有以下 table 结构
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 降序排列,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,