Heim > Fragen und Antworten > Hauptteil
yii mit orderBy,
, jetzt ist das gedruckte SQL, und das SQL, das ich brauche, ist so, bitte sagen Sie mir, wie ich dieses Problem lösen kann. Dies basiert auf der Reihenfolge nach Feldern (ID, 5, 3, 8) in MySQL . Außerdem möchte ich eine spezielle Sortierung eines bestimmten Feldes im Yii-Framework implementieren. Gibt es außer der Reihenfolge nach Feldern noch eine andere Methode?
三叔2017-06-20 10:09:49
->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')")])