Еще один вопрос про фильтрацию данных. Вот скрин:
Мне надо от флиртовать только пациентов пользователя нажатием кнопки "мои пациенты".
т.е при нажатий кнопки сперва должен отфильтроваться по пользователю, а затем уже по Фамилий и имени
<?php
namespace frontend\models;
use Yii;
use yii\base\Model;
use yii\data\ActiveDataProvider;
use frontend\models\History;
/**
* SearchPacients represents the model behind the search form of `frontend\models\History`.
*/
class SearchPacients extends History
{
public $family;
public $name;
public $otchestvo;
public $filtr;
/**
* @inheritdoc
*/
public function rules()
{
return [
[['id', 'pacient_id', 'standart_id', 'doctor_id', 'otdelenie_id', 'status_id', 'type_analiz_id', 'organization_id', 'napravlenie_id', 'lu'], 'integer'],
[['date','family' ,'name','date_close'], 'safe'],
];
}
/**
* @inheritdoc
*/
public function scenarios()
{
// bypass scenarios() implementation in the parent class
return Model::scenarios();
}
/**
* Creates data provider instance with search query applied
*
* @param array $params
*
* @return ActiveDataProvider
*/
public function search($params)
{
$query = History::find();
$dataProvider = new ActiveDataProvider([
'query' => $query,
]);
$dataProvider->setSort([
'attributes' => [
'id',
'family' => [
'label' => 'Фамилия',
'default' => SORT_ASC
],
'name' => [
'label' => 'Имя',
'default' => SORT_ASC
],
'otchestvo' => [
'label' => 'Отчество',
'default' => SORT_ASC
],
'dr' => [
'label' => 'Дата рождение',
'default' => SORT_ASC
],
]
]);
if (!($this->load($params) && $this->validate())) {
/**
* Жадная загрузка данных модели Страны
* для работы сортировки.
*/
$query->joinWith(['pacients']);
return $dataProvider;
}
//$this->addCondition($query, 'id');
// $this->addCondition($query, 'family', true);
$this->filtr=Yii::$app->user->id;
$query->andFilterWhere(['doctor_id'=>$this->filtr]);
// Фильтр по стране
$query->joinWith(['pacients' => function ($q) {
$q->where('pacients.family LIKE "%' . $this->family. '%"');
}]);
$query->joinWith(['pacients' => function ($q) {
$q->where('pacients.name LIKE "%' . $this->name. '%"');
}]);
$query->joinWith(['pacients' => function ($q) {
$q->where('pacients.otchestvo LIKE "%' . $this->otchestvo. '%"');
}]);
return $dataProvider;
}
}
Сейчас он работает наоборот. Если нажимаю Мои пациенты, никакой реакции.