2013-07-18 22 views
0

我正在寻找在相关模块模型的模型中启用搜索条件。 下面是一个例子来解释我的意思:Yii Model CGridView包括具有Yii-User Profile字段的列字段数据

  • 我有一个'产品'模型,其中包含'user_id'。
  • 在Yii用户中,我创建了一个名为'brand'的自定义配置文件字段。
  • 我在我的产品模型的索引视图中列出了所有产品的CGridView(具有搜索/过滤器功能)。
  • 我想将'品牌'个人资料字段(这是一个用Yii-User制作的自定义个人资料字段)添加到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

为什么你在'relations()'函数中放置了下面几行?

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

您需要在'产品'模型上放置'brand'公共或私人属性。该属性不是持久的,仅用于获取过滤器表单值。

然后,使用这样的:

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

而且是可能的,你需要把“品牌”的“规则()”属性,数组()与“上” =>“搜索”。