php - Comment utiliser la commande par champ dans le framework Yii
黄舟
黄舟 2017-06-20 10:07:49
0
1
1190
Comment fusionner order by field dans

yii en orderBy,

, maintenant le sql imprimé, et le sql dont j'ai besoin est comme ça, s'il vous plaît dites-moi comment résoudre ce problème, ceci est basé sur l'ordre par champ (id, 5, 3, 8) dans mysql . De plus Un point, je souhaite implémenter un tri spécial d'un certain champ dans le framework Yii. Existe-t-il une autre méthode que le tri par champ ? J'ai vérifié plusieurs erreurs causées par le symbole "`" ?

黄舟
黄舟

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

répondre à tous(1)
三叔

->orderBy(["FIELD(step, 'star', 'person', 'team')" => true]) C'est possible, mais je n'ai pas regardé attentivement le code sous-jacent. . . Mais cela devrait résoudre le problème

/**
     * @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);
    }

Il s'agit d'une méthode pour générer une instruction orderby, donc true n'a aucun effet réel, mais elle n'est pas égale à SORT_DESC et devient alors vide,

La façon la plus officielle de l'écrire est la suivante :

orderBy([new Expression("FIELD(step, 'star', 'person', 'team')")])
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal