문제

I'm looking to enable search criteria in a model for a related module's model. Here's an example to explain what I mean:

  • I have a 'Product' model which contains 'user_id'.
  • In Yii-user I created a Custom Profile Field called 'brand'.
  • I have a CGridView (with Search/Filter functionality) in my Product model's index view which lists all products.
  • I want to add the 'brand' profile field (which is a custom Profile Field made with Yii-User) to the CGridView columns allowing people to filter and search the grid view by 'brand'.

I added the following code to my Product model relations:

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

And then adding this to the Product model's search criteria:

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

This however yields no positive results.

I'm not sure if I'm going the right direction here. Anyone know how to do this?

도움이 되었습니까?

해결책

Why you put the below lines in 'relations()' function?

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

You need put 'brand' how a public or private attribute on 'Product' model. This attribute is not persistent, only use for the get the filter form value.

Then use like this:

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

And is possible that you need put 'brand' attribute on the 'rules()', on the array() with 'on'=>'search'.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top