Добрый день.
Вам надо дописать немного поисковую модель.
Добавьте в эту модель публичное свойство. Это свойство потом будете выводить в gridView и по нему фильтровать.
Приблизительно так:
public $program_name_id; // необходимо добавить в правила rules(), например указать, что это свойство integer
public function rules()
{
return [
['program_name_id', 'integer']
];
}
// и добавить в фильтры
->andFilterWhere(['program.id' => $this->program_name_id])
Теперь тут не совсем ясно, скорей всего "program" это связь между моделями и таблицами в базе.
Если это так, то в gridview можно вывести так:
'columns' => [
[
'attribute' => 'program_name_id',
'value' => 'program.name'
]
]
И добавить фильтр
'columns' => [
[
'attribute' => 'program_name_id',
'filter' => Program::getAllProgram()
'value' => 'program.name'
]
]
Program::getAllProgram() в модели Program может выглядеть так
use yii\helper\ArrayHelper;
public static function getAllProgram()
{
/**
* в запрос self::find()->all() можно добавить условие выборки, сортировки, группировки и т.д. и т.п.
*/
return ArrayHelper::map(self::find->all(), 'id', 'name');
}
p.s. Что бы по имени искало, то думаю, что надо изменить в поисковой модели и в представлении так:
public $program_name; // необходимо добавить в правила rules(), например указать, что это свойство string
public function rules()
{
return [
['program_name', 'string']
];
}
// и добавить в фильтры
->andFilterWhere(['like','program.name' , $this->program_name])
Если это так, то в gridview можно вывести так:
'columns' => [
[
'attribute' => 'program_name',
'value' => 'program.name'
]
]