首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误的CSqlDataProvider排序属性文本

错误的CSqlDataProvider排序属性文本
EN

Stack Overflow用户
提问于 2014-11-07 10:32:25
回答 1查看 94关注 0票数 0

我使用Yi1.1.15,在我的ClistView中有一些可排序的属性。这很好,问题是我的模型类中的测试没有从attributeLabels()中读取。

代码语言:javascript
复制
$dataProvider=new CSqlDataProvider($sql, array(
        'params'=> array(':lat' => $lat, ':lng'=>$lng, ':radius'=>$radius),
        'totalItemCount'=>$count,
        'sort'=>array(
            'defaultOrder'=>'distance ASC',
            'attributes'=>array(
                'store','state','distance'
            ),
        ),
        'pagination'=>array(
            'pageSize'=> $perPage,
        ),
    )
);

我得把它换到下面才能起作用。

代码语言:javascript
复制
'attributes' => array(
    'store'=>'Store Name', 
    'state'=> 'State',
    'distance'=>'Distance to Store'
),

知道我错过了什么吗?

这是我的模型中的attributeLabels()

代码语言:javascript
复制
public function attributeLabels(){
    return array(
        'id' => 'ID',
        'store' => 'Store Name',
        'address' => 'Address',
        'city' => 'City',
        'state' => 'State',
        'country' => 'Country',
        'descscription' => 'Description',
        'ip' => 'Ip',
        'distance'=>'Distance to Store'
    );
}

下面是我在store.php模型中与state模型的关系

代码语言:javascript
复制
public function relations()
    {
        // NOTE: you may need to adjust the relation name and the related
        // class name for the relations automatically generated below.
        return array(
            '_state' => array(self::BELONGS_TO, 'state', 'state'),
            '_contact' => array(self::HAS_MANY, 'StoreContact', 'store_id'),
        );
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-07 21:31:53

CActiveDataProviderCSqlDataProvider有很大的不同

CActiveDataProvider

CActiveDataProvider实现了基于ActiveRecord的数据提供程序。

CSqlDataProvider

CSqlDataProvider实现了基于普通SQL语句的数据提供程序。

因此,当您使用CSqlDataProvider时,模型将没有角色,您的数据提供者也不会查找任何模型。

但是,如果要使用模型属性,可以在CSqlDataProvider中使用键值数组,如下所示:

代码语言:javascript
复制
'attributes' => array(
    'store'=> StoreModel::model()->getAttributeLabel('store'), 
    'state'=> StoreModel::model()->getAttributeLabel('state'),
    'distance'=> StoreModel::model()->getAttributeLabel('distance'),
),

请注意,我假设您的模型名为StoreModel

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26799203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档