Объединение в условии where IN для msproducts

Подскажите пожалуйста, где ошибка?:
Для сниппета msProducts задаю условие where
if(!empty($_GET['brands'])) {
	$brs = array();
	$brs = implode(',',$_GET['brands']);
	$filter[] = array('vendor.id:IN' => array($brs));
	
}

$where = $modx->toJSON($filter);
И он выводит только по одному бренду, хотя в условии содержится
Added where condition: class_key=msProduct, vendor.id:IN(3,2)

В запросе получается

WHERE ( `msProduct`.`class_key` = 'msProduct'AND `vendor`.`id` IN (3) AND isfolder=0 AND `msProduct`.`parent` IN (22,35,38,39,40,41) AND `msProduct`.`published` = 1 AND `msProduct`.`deleted` = 0 ) GROUP BY msProduct.id ORDER BY msProduct.pagetitle asc LIMIT 3 „

Или может кто знает, как в условии where вместо оператора AND что бы подставлялся OR?
Женя Бровцын
31 марта 2017, 09:58
modx.pro
1 243
0

Комментарии: 2

Виталий Крупин
02 апреля 2017, 06:14
0
$_GET['brands'] — это точно массив? Есть предположение что у вас на входе только последнее значение с ID бренда.
    Женя Бровцын
    02 апреля 2017, 11:46
    0
    В $_GET['brands'] все нормально. я же писал —
    Added where condition: class_key=msProduct, vendor.id:IN(3,2)
    Я так понял неправильно работает $modx->toJson, т.е. из массива array(1,2) он создает [{«1,2»}] а надо [{«1»,«2»}].

    Получилось решить так —
    if(!empty($_POST['brands'])) {
    	foreach($_POST['brands'] as $brand)
    	{
    		if($brand > 0) 
    		  $brs .=  '"'. $brand.'"'  . ',';
    	}
    	$brs=substr($brs, 0, -1);
    }
    $brandsStr  = strlen($brs) ? '[{"Vendor.id:IN":['. $brs  . ']}]' : '';
    а потом уже в $where добавлять
    if($brandsStr && $where)  $newwhere = '['. $brandsStr . ',' . $where . ']';
    if($brandsStr && !$where)  $newwhere = '['. $brandsStr  . ']';
    else $newwhere = $where;
    Кстати неплохой, легкий ajax фильтр получился, теперь только с пагинацией разобраться осталось,
    а то я вывожу фильтр
    [[!pdoPage? &element=`filter` 
    				&tpl=`productsgridTpl` 
    				&limit=`3` 
    				&parents=`[[*id]]`
    				]]


    а надо pdopage использовать внутри filter, что бы пагинация при ajax работала. (Хоть и не уверен, пока,
    что будет работать), но у меня там появляется кнопка «Загрузить еще» и она отлично работает, так, что пагинация и не нужна
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2