mfilter2 + remians: фильтрация размеров с учетом остатков

Здравствуйте!
minishop2 + msearch2 + msproductremains.
Фильтр используется по стандартному свойству «размер». Задача фильтровать — показывать только те товары, у которых есть в остатках нужный размер.

Пример из документации отфильтровывает товары, общее значение остатков совпадает с указанным в вызове количеством, без учета фильтруемого размера.

Как скорректировать запрос?
Скаут
03 июня 2024, 18:48
modx.pro
110
0

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

Артур Шевченко
03 июня 2024, 22:08
0
Просто скорректировать запрос не получится, надо свой фильтр писать.
    Скаут
    04 июня 2024, 00:57
    0
    да, так и сделал:
    внутри функции filterDefault дописал
    foreach ($resources as $id) {
    				    
    				    $remains = $this->modx->getCollection('msprRemains', array('product_id' => $id));
                    	$remainsResult = array();
                    	foreach ($remains as $remain) {
    						$options = $remain->get('options');
                    		$remainsResult[$options['size']] = array(
                    			'id'      => $remain->get('id'),
                    			'remains' => (int) $remain->get('remains')
                    		);
                    	}
    				    
    					if (isset($tmp[$id])) {
    						if ( $remainsResult[$value]['remains'] > 0 ) {
    							$matched[] = $id;
    						}
    					}
    				}
    потыкал, вроде, корректно работает. Но в вызове всё равно нужен leftJoin из документации.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    2