首页 文章

Yii:查询构建器:按顺序表达

提问于
浏览
1

在AC中,此顺序运行良好,但“查询”构建器使引号错误,结果错误

$models = Yii::app()->db->createCommand()
->select('id, user_id, title, created, modified, lang, forum_id, post_id, status, views, replies, attached')
->from('posts')
->where('post_id = 0')
->order('attached AND forum_id = 1 AND created DESC, created DESC')
->limit(11)
->queryAll();

错误:

CDbCommandнеудалосьисполнитьSQL-запрос:SQLSTATE [42S22]:未找到列:1054未知列'附加AND forum_id = 1并在'order子句'中创建' . 执行的SQL语句是:SELECT id,user_id,title,created,modified,lang,forum_id,post_id,status,views,reply,attach FROM posts FROM WHERE post_id = 0 ORDER BY attach AND forum_id = 1 AND created DESC,回复DESC,创建了DESC LIMIT 11

怎么解决?

附:对不起我的英语不好 .

2 回答

  • 2

    你的 whereorder 应该是:

    ->where('post_id = 0')
    ->order('CASE WHEN forum_id =1 THEN 1 ELSE 2 END, created DESC')
    

    参考:How do I return rows with a specific value first?

  • 0

    您应该在圆括号中使用顺序表达式以避免检查列 . 这必须奏效

    ->order('(attached AND forum_id = 1 AND created) DESC, created DESC')
    

相关问题