php – So verwenden Sie die Reihenfolge nach Feldern im YII-Framework
黄舟
黄舟 2017-06-20 10:07:49
0
1
1185
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?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

Antworte allen(1)
三叔

->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')")])
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!