我希望在模型中为相关模块的模型启用搜索条件。这里有一个例子来解释我的意思:
- 我有一个"产品"模型,其中包含"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()上。