Heim  >  Fragen und Antworten  >  Hauptteil

php – So verwenden Sie die Reihenfolge nach Feldern im YII-Framework

So verbinden Sie Order by Field in

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?

黄舟黄舟2648 Tage vor1142

Antworte allen(1)Ich werde antworten

  • 三叔

    三叔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')")])

    Antwort
    0
  • StornierenAntwort