【问题标题】:Yii ORDER BY FIELD() in CDbCriteriaCDbCriteria 中的 Yii ORDER BY FIELD()
【发布时间】:2015-01-21 05:36:32
【问题描述】:

有什么方法可以使用 ORDER BY FIELD() 功能创建 CDbCriteria 实例吗?

列是glncrna_id, id_list: 'GlncRNA10003d', 'GlncRNA10027d', 'GlncRNA20024d'

$criteria1->order = "FIELD(glncrna_id, 'GlncRNA10003d', 'GlncRNA10027d', 'GlncRNA20024d')";

$criteria1->order = "FIELD('glncrna_id', GlncRNA10003d, GlncRNA10027d, GlncRNA20024d)";

$criteria1->order = "FIELD('glncrna_id', 'GlncRNA10003d, GlncRNA10027d, GlncRNA20024d')";

显示一般错误:1 没有这样的功能:FIELD

$criteria1->order = "FIELD(glncrna_id, GlncRNA10003d, GlncRNA10027d, GlncRNA20024d)";

显示不是 GlncRNA10003d 列

如何在 id_list 中排序结果?我使用 sqlite 数据库

【问题讨论】:

标签: php yii


【解决方案1】:

试试这个:

$criteria1=new CDbCriteria;  <br/>
$criteria1->order="FIELD(glncrna_id,'GlncRNA10003d','GlncRNA10027d','GlncRNA20024d') DESC";

【讨论】:

  • 谢谢,我试了,还是显示没有FIELD这个功能
  • @JesseSiu 我所做的只是编辑帖子,仅此而已。
【解决方案2】:

你必须使用 Cshort 来使用不同的顺序

        $sort = new CSort();
        //this should be default order
        $sort->defaultOrder = 't.glncrna_id DESC'; 
        $sort->attributes = array(
            'GlncRNA10003d' => array(
                'asc' => 'GlncRNA10003d asc',
                'desc' => 'GlncRNA10003d desc'
            ),
            'GlncRNA10027d' => array(
                'asc' => 'GlncRNA10003d asc',
                'desc' => 'GlncRNA10027d desc'
            ),
        );

        $dataProvider = new CActiveDataProvider('ModelName', array(
            'criteria' => $criteria,
            'sort' => $sort
        ));

【讨论】:

    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 2020-08-31
    • 2020-08-25
    相关资源
    最近更新 更多