簡體   English   中英

Yii 1 - 按關系字段排序不起作用

[英]Yii 1 - Ordering by relation field not working

我知道它是一個常見的問題,但我得到一個關於未連接表的特定錯誤。

我的主要模型(組)有這種關系(1:1):

return array(
        'groupType'=>array(self::BELONGS_TO, 'GroupType', 'groupTypeId','order'=>'name ASC');

正如您所看到的,我試圖將訂單屬性設置為無效。

你可以想象,我的另一個模塊GroupType有一個名為'name'的屬性。

在網格視圖中,只需使用關系名稱即可很好地打印關系模型:

array(
    'name'=>'groupType',
    'value'=>'$data->groupType->name'
),

Autoload在GridView中運行良好。

不幸的是,該列不可排序。 所以我將一個CSort參數放到搜索方法中提供的DataProvider中,如下所示:

$sort = new CSort();
    $sort->defaultOrder = 'id asc';
    $sort->attributes = array(
            'groupType'=>array(
                'asc'=>'groupType.name asc',
                'desc'=>'groupType.name desc'
            ),
            'description'=>array(
                    'asc'=>'t.description asc',
                    'desc'=>'t.description desc'
            ),
            'name'=>array(
                    'asc'=>'t.name asc',
                    'desc'=>'t.name desc'
            ),
            '*');

    return new CActiveDataProvider($this, array(
        'criteria'=>$criteria,
        'sort'=>$sort
    ));

按描述和名稱(Group的屬性)排序工作正常。 當我嘗試通過groupType訂購時,我得到這個簡單的錯誤:

SQL: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'groupType.id' in 'order clause'. The SQL statement executed was: SELECT * FROM `cprol_groups` `t` ORDER BY groupType.idname asc LIMIT 20

如您所見,框架未加入我的相關表。 在這種情況下,由於相同的屬性名稱,我必須使用什么Alias?

謝謝你的任何建議!

我已經決定強迫加入。

在標准中,我必須強制加入:

$criteria->join = 'join '.GroupType::model()->tableName().' gt on gt.id = t.groupTypeId';

或使用 - > with語句:

$criteria->with = 'groupType';

刪除關系中的默認順序並添加別名:

return array('groupType'=>array(self::BELONGS_TO, 'GroupType', 'groupTypeId','alias'=>'gt'));

所以你可以按關系字段訂購:

$sort = new CSort();
                $sort->defaultOrder = 'gt.name asc';
                $sort->attributes = array(
                                'groupTypeId'=>array(
                                        'asc'=>'gt.name asc',
                                        'desc'=>'gt.name desc'
                                ),

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM