php - yii 框架如何使用order by field

查看:92
本文介绍了php - yii 框架如何使用order by field的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

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]) 是可以的,但是我没细看底层的代码。。。 不过应该能解决问题

/**
     * @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')")])

这篇关于php - yii 框架如何使用order by field的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆