2015-10-07 78 views
3

我想对自定义字段进行排序记录,但它给yii2中的错误,任何人都可以帮助我。通过自定义值排序Yii2

->orderBy(player.PlayerRole, 'G','D','M','F'); 其中G,D,M和F是自定义值。这项工作在MySQL中很好,但在yii2它没有。

我也尝试过这一

$expression = new Expression('field(player.PlayerRole,G,D,M,F)'); 

->orderBy($expression)

这里是完整的查询

$expression = new Expression('field(player.PlayerRole,G,D,M,F)'); 
return (new Query()) 
->select('*') 
->from('tablename')`enter code here` 
->orderBy(player.PlayerRole, 'G','D','M','F'); 
->all(); 
+0

你能提供大部分代码的方式和对象的界定? –

+0

请看看上面的帖子中给出的完整查询。 –

回答

3

正如在这个问题提到:

请阅读文档小心。 orderBy接受一个数组,一个数组元素可以是一个表达式。所以你应该使用$ query-> orderBy(array($ expression))而不是$ query-> orderBy($ expression)。

https://github.com/yiisoft/yii2/issues/553

所以尽量->orderBy(array($expression))