Допустим нам необходимо сделать фильтр по категориям. Структура нашей таблицы
// Таблица постов tbl_post - id - title - description - category - user // Таблица категории tbl_cat - id - name // Наши таблицы связываются между собой по полям tbl_post.category -> tbl_cat.id
В модели Yii связь можно установить следующим образом
// Модель tbl_post например frontend/models/Post.php. Ниже приведенный метод необходимо вставить в класс. public function getCategoryname() { return $this->hasOne(Category::className(), ['id' => 'category']); }
После прописанного метода нам будет доступен attribute categoryname
// Код view <? echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], // 'id', [ 'attribute' => 'categoryname', 'value' => 'categoryname.name', 'filter' => Select2::widget([ 'model' => $searchModel, 'attribute' => 'categoryname', 'data' => ArrayHelper::map(Category::find()->asArray()->all(), 'id', 'name'), 'value' => 'categoryname.name', 'options' => [ 'class' => 'form-control', 'placeholder' => 'Выберите значение' ], 'pluginOptions' => [ 'allowClear' => true, 'selectOnClose' => true, ] ]) ], ] ]); ?>
Добавить комментарий