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 然後變成空了 ,
比較官方的寫法是這樣的: