84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
yii 中order by field 如何拼接在orderBy中,
,现在打印出来的sql,而我本身所需要的sql是这样,请问一下这个问题怎么解决,这个是参考mysql中的order by field(id,5,3,8)另外一点,yii框架中想实行对某个字段进行特殊排序,除了order by field还有别的方法吗,查了好几种都是由于“`”此符号导致的错误
人生最曼妙的风景,竟是内心的淡定与从容!
->orderBy(["FIELD(step, 'star', 'person', 'team')" => true]) 是可以的,但是我没细看底层的代码。。。 不过应该能解决问题
->orderBy(["FIELD(step, 'star', 'person', 'team')" => true])
/** * @param array $columns * @return string the ORDER BY clause built from [[Query::$orderBy]]. */ public function buildOrderBy($columns) { if (empty($columns)) { return ''; } $orders = []; foreach ($columns as $name => $direction) { if ($direction instanceof Expression) { $orders[] = $direction->expression; } else { $orders[] = $this->db->quoteColumnName($name) . ($direction === SORT_DESC ? ' DESC' : ''); } } return 'ORDER BY ' . implode(', ', $orders); }
这是生成orderby语句的方法,所以true并没有什么实质的作用,只是不等于 SORT_DESC 然后变成空了 ,
比较官方的写法是这样的:
orderBy([new Expression("FIELD(step, 'star', 'person', 'team')")])
->orderBy(["FIELD(step, 'star', 'person', 'team')" => true])
是可以的,但是我没细看底层的代码。。。 不过应该能解决问题这是生成orderby语句的方法,所以true并没有什么实质的作用,只是不等于 SORT_DESC 然后变成空了 ,
比较官方的写法是这样的: