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


Yii Model CGridView including column with Yii-User Profile Field data

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

  • 我有一个"产品"模型,其中包含"user_id"
  • 在Yii用户中,我创建了一个名为"品牌"的自定义配置文件字段
  • 我的产品模型的索引视图中有一个CGridView(具有搜索/筛选功能),它列出了所有产品
  • 我想在CGridView列中添加"品牌"配置文件字段(这是Yii用户创建的自定义配置文件字段),允许人们按"品牌"过滤和搜索网格视图

我将以下代码添加到我的产品模型关系中:

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);

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

我不确定我在这里的方向是否正确。有人知道怎么做吗?

为什么把下面的行放在relationships()函数中?

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

您需要将"品牌"如何作为"产品"模型的公共或私有属性。此属性不是持久性的,仅用于获取筛选器表单值。

然后这样使用:

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

您可能需要将"brand"属性放在"rules()"上,放在带有"on"=>"search"的array()上。