0

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

  • 我有一个包含“user_id”的“产品”模型。
  • 在 Yii 用户中,我创建了一个名为“品牌”的自定义配置文件字段。
  • 我的产品模型的索引视图中有一个 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'),
    );
}

然后将其添加到 Product 模型的搜索条件中:

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

然而,这不会产生积极的结果。

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

4

1 回答 1

1

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

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

您需要将“品牌”作为“产品”模型的公共或私有属性。该属性不是持久的,仅用于获取过滤器表单值。

然后像这样使用:

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

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

于 2013-07-18T13:04:04.073 回答