Yii расширенный поиск не работает с определенной функцией поиска на основе отношения

В моей системе у меня есть 3 типа пользователей, Администратор, Руководитель а также Обычный пользователь. Каждый тип пользователя имеет Руководитель кто сам другой пользователь.
Предположим, у нас есть две таблицы, users а также documents и отношение следующее:введите описание изображения здесь

Здесь documents таблица связана с users таблица по user_id колонка.
В моей системе у меня есть CGridview Documents модуль на основе зарегистрированного типа пользователя. Если вошедший в систему тип пользователя Администратор, тогда он показывает все записи document Таблица.

Если вошедший в систему тип пользователя Руководитель, тогда он покажет только те записи из documents стол, где documents.user_id равен тем users.user_id, чья users.sp_id = LoggedInUserизвините, если я не могу выразить это ясно.

Я могу показать данные в CGridview, используя отношение в Documents модель.

public function relations(){
'users' => array(self::BELONGS_TO, 'Users', 'user_id'),
}

и в Document Модель Я объявляю две пользовательские функции для возврата желаемого DataProvider. Это:

public function searchByUser($id)
{
$criteria=new CDbCriteria;
$criteria->condition = "user_id=$id";
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'doc_id DESC',
),
));
}

а также

public function searchBySupervisor($supervisor_id)
{
$criteria=new CDbCriteria;

$criteria->with=array('users');
$criteria->compare('user_id',$this->user_id,true);
$criteria->condition = "sp_id=$supervisor_id AND status='active'";
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'defaultOrder'=>'doc_idDESC',
),
));
}

В моем /documents/adminвид, я использую DataProvider на основе зарегистрированного пользователя в CGridview:

if ($UserType=="Normal_User"){
$this->widget(
'booster.widgets.TbGridView', array(
'type' => 'striped bordered condensed',
'dataProvider'=>$model->searchByUser(Yii::app()->user->getId()),


elseif($UserType == "supervisor"){

$this->widget(
'booster.widgets.TbGridView', array(
'type' => 'striped bordered condensed',
'dataProvider'=>$model->searchBySupervisor(Yii::app()->user->getId()),

Все работает нормально, кроме моей функции поиска не работает. Если я вошел в систему как супервизор, значит, если я использую это: 'dataProvider'=>$model->searchBySupervisor(Yii::app()->user->getId()), dataprovider, моя опция расширенного поиска не фильтрует вид сетки на основе параметра поиска, он возвращает те же данные.

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]