Yii模型CGridView包括具有Yii用户配置文件字段数据的列

时间:2013-07-18 10:49:49

标签: php yii yii-extensions cgridview

我希望在模型中为相关模块的模型启用搜索条件。 这是一个解释我的意思的例子:

  • 我有一个'产品'模型,其中包含'user_id'。
  • 在Yii-user中,我创建了一个名为“品牌”的自定义配置文件字段。
  • 我的产品型号索引视图中有一个CGridView(带搜索/过滤功能),列出了所有产品。
  • 我想将“品牌”个人资料字段(使用Yii用户制作的自定义个人资料字段)添加到CGridView列,以便人们按“品牌”过滤和搜索网格视图。

我在产品模型关系中添加了以下代码:

public function relations()
{
            Yii::import('application.modules.user.models.*');
    Yii::app()->getModule('user');
    return array(
        'user' => array(self::BELONGS_TO, 'Users', 'user_id'),
    );
}

然后将其添加到产品型号的搜索条件中:

$criteria->compare('user.brand', $this->user->profile->brand, true);

然而,这没有产生积极的结果。

我不确定我是否在这里朝着正确的方向前进。有谁知道怎么做?

1 个答案:

答案 0 :(得分:1)

为什么将以下行放在'relations()'函数中?

Yii::import('application.modules.user.models.*');
Yii::app()->getModule('user');

您需要在“产品”模型中放置“品牌”公共或私人属性的方式。此属性不是持久性的,仅用于获取过滤器表单值。

然后像这样使用:

$criteria->compare('user.brand', $this->brand, false);

您可能需要在'rules'上使用'on'=>'search'将'brand'属性放在'rules()'上。