Задача, есть таблица продуктов, категорий и связей между ними.
1 продукт может находится в разных категориях.
получается связь между продуктами и категориями MANY_MANY
вывожу все это дело в гриде. естественно без какой-либо группировки по категориями
сплошной список продуктов, в колонке категорий вывожу список категорий в которых находится продукт, просто через запятую.
но в этой колонке я хочу приделать фильтр по категориям
сам фильтр отображается, все корректно передает
но вот момент как фильтровать по такому полю пока проходит мимо меня.
в квартире 38 градусов и мозг немного начинает подтекать.
подскажите куда копать ? а то что-то не пойму в какую сторону мне идти
фильтрация происходит в экшене примерно по такому принципу
$model = new products('search');
if(isset($_GET['products'])) {
if(!empty($_GET['products']['products_id'])) $model->products_id = $_GET['products']['products_id'];
if(!empty($_GET['products']['products_name'])) $model->products_name = $_GET['products']['products_name'];
if(!empty($_GET['products']['products_model'])) $model->products_model = $_GET['products']['products_model'];
if(!empty($_GET['products']['categories_id'])) $model->categories_id = $_GET['products']['categories_id'];
if(!empty($_GET['products']['manufacturers_id'])) $model->manufacturers_id = $_GET['products']['manufacturers_id'];
}
$criteria = new CDbCriteria;
$criteria->with = array('manufacturers');
$sort = new CSort('pages');
$sort->defaultOrder = 't.products_name asc';
$dataProvider = new CActiveDataProvider('products', array(
'criteria' => $criteria,
'sort' => $sort,
'pagination' => array(
'pageSize' => Yii::app()->params['perPage'],
),
));
if(!empty($model->products_id)) $dataProvider->criteria->compare('t.products_id', $model->products_id);
if(!empty($model->products_name)) $dataProvider->criteria->addSearchCondition('t.products_name', '%' . $model->products_name . '%', false);
if(!empty($model->products_model)) $dataProvider->criteria->addSearchCondition('t.products_model', '%' . $model->products_model . '%', false);
if(!empty($model->manufacturers_id)) $dataProvider->criteria->compare('t.manufacturers_id', $model->manufacturers_id);