Yii2 orderBy具体值

时间:2017-03-31 01:01:03

标签: yii2 yii2-basic-app

这是我的控制器

public function actionIndex()
{
    $query = users::find();
    $count = count($users);
    $pagination = new Pagination(['totalCount' => $count, 'pageSize'=>20]);
    $models = $query->offset($pagination->offset)
    ->limit($pagination->limit)
    ->orderBy([new \yii\db\Expression('FIELD (mission, Leader, Right Hand, QA, Member)')])
    ->all();
    return $this->render('index', [
        'models' => $models,
        'pagination' => $pagination,
    ]);
 }

但它不起作用。我一直收到这个错误

  

语法错误或访问冲突:1064 SQL语法中出错;检查与您的MariaDB服务器版本对应的手册,以便在第1行“Hand,QA,Member”LIMIT 16 OFFSET 16'附近使用正确的语法   正在执行的SQL是:SELECT * FROM users ORDER BY FIELD(任务,领导,右手,QA,成员)LIMIT 16 OFFSET 16

请帮我解决这个问题。谢谢。

1 个答案:

答案 0 :(得分:0)

如果您需要按FIELD(列,字符串....)订购,则应使用值

附近的引号
->orderBy([new \yii\db\Expression("FIELD (mission, 'Leader', 'Right Hand', 'QA', 'Member')")])