@Monitorkin

Фильтры в GridView. leftJoin и andFilterWhere как вывести?

Не понимаю как заставить фильтр отображаться. Прошу помочь с настройкой фильтра по связанным полям.
В SearchModel строится запрос из двух таблиц 'shop_product' (product_id, published и т.д.)- продукты и 'shop_product_value' (product_id, param_id, value)- значения параметров продуктов, которые связаны по product_id:

$query = (new \yii\db\Query())
    		->select(['p.product_id', 'Опубликован' => 'p.published', 'Price' => 'p1.value', 'Description' => 'p2.value'])
    		->from(['p' => 'shop_product'])
    		
    		->leftJoin('shop_product_value AS p1', 'p.product_id = p1.product_id AND p1.param_id IN (2)')
    		->leftJoin('shop_product_value AS p2', 'p.product_id = p2.product_id AND p2.param_id IN (5)')
    		
    		->indexBy('product_id');


далее:

$dataProvider = new ActiveDataProvider([
    			'query' => $query,
    			'pagination' => [
    				'pageSize' => 10,
    			],
    		]);
    		...
    		$query->andFilterWhere([
    			'p.product_id' => $this->product_id, // генерирует поле фильтра
    			'p.published' => $this->published,  //фильтра нет!
    			'p1.value' => ???????, //фильтра нет!
    
    		]);
    		...
    		return $dataProvider;



- Как заставить фильтр работать в таком запросе?
- Почему если добавить псевдоним 'Опубликован' => 'p.published', фильтр перестает выводится, но если убрать 'Опубликован' то фильтр появляется?
- Как вывести фильтр для полей из leftJoin???

GridView пока для упрощения вывожу так:

GridView::widget([
    		'dataProvider' => $dataProvider,
    		'filterModel' => $searchModel,
    		//'columns' => $columns,
    	]);


Буду благодарен за помощь, перепробовал уже всё что можно :-(...
  • Вопрос задан
  • 274 просмотра
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
надо добавить публичные атрибуты в модель, описать их в rules, для сортировки описать sort в dataProvider
читать:
www.yiiframework.com/wiki/653/displaying-sorting-a...
www.yiiframework.com/wiki/621/filter-sort-by-calculated
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы