Вывод наименьшей цены из списка товаров в категори
        Здравствуйте.
Уже вхожу в тотальный затуп, но так и не получается реализовать в minishop2 вышеозвученную задачу.
Реализую запрос следующим образом:
    
    
                                                                                
            Уже вхожу в тотальный затуп, но так и не получается реализовать в minishop2 вышеозвученную задачу.
Реализую запрос следующим образом:
//получаем список "детей" категории
if (empty($parent)) {$parent = $modx->resource->id;}
$pids = array_merge(array($parent), $modx->getChildIds($parent));
$ids = array();
//выбираем из него только опубликованные товары
$q = $modx->newQuery('msProduct');
$q->where(array('class_key' => 'msProduct','parent:IN' => $pids,'published' => 1,'deleted' => 0));
$q->select('`msProduct`.`id`');
if ($q->prepare() && $q->stmt->execute()) {
	$ids = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
}
//подцепляем к нему товары из мультикатегорий
$q = $modx->newQuery('msProduct');
$q->leftJoin('msCategoryMember', 'Member', '`Member`.`product_id` = `msProduct`.`id`');
$q->where(array('class_key' => 'msProduct','Member.category_id:IN' => $pids,'published' => 1,'deleted' => 0));
$q->select('`msProduct`.`id`');
if ($q->prepare() && $q->stmt->execute()) {
	$ids2 = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
	if (!empty($ids2)) {
		$ids = array_unique(array_merge($ids, $ids2));
	}
}
//счетчик товаров
$count = count($ids);
$modx->setPlaceholder('catalog.count',$count);
if ($count == 0) {
	$modx->setPlaceholder('catalog.min',$count);
}
else {
	//получаем наименьшую цену из товаров категории
	$q = $modx->newQuery('msProduct');
	$q->where(array('id:IN' => $ids));
	$q->sortby('price', 'DESC');
	$q->select(array(
		"msProduct.id",
		"msProduct.price",
	));
	$q->limit(1);
	if ($q->prepare() && $q->stmt->execute()) {
		$min = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
		if (!empty($min['price'])) {
			$modx->setPlaceholder('catalog.min',$min['price']);
		}
	}
}
return; — ошибок в консоли нет, но цена упорно не выбирается. В чем может быть причина? Заранее спасибо.    Комментарии: 5
                Слегка обновил последнюю часть до:
                    $q = $modx->newQuery('msProduct');
	$q->innerJoin('msProductData', 'msProductData', '`msProductData`.`product_id` = `msProduct`.`id`');
	$q->where(array('msProduct.id:IN' => $ids, 'msProductData.price:>=' => "0"));
	$q->sortby('msProductData.price', 'DESC');
	$q->select('`msProductData`.`price`');
	$q->limit(1);
	if ($q->prepare() && $q->stmt->execute()) {
		$min = $q->stmt->fetchAll(PDO::FETCH_COLUMN);
		if (!empty($min['price'])) {
			$modx->setPlaceholder('catalog.min',$min['price']);
		}
	} — но все равно нет никакого результата и в логах пустота…            $pdo = $modx->getService('pdoFetch');
$result = $pdo->getArray(
	// Класс
	'msProduct',
	// Условие where
	array(
		'deleted' => false,
		'published' => true,
	),
	// Параметры выборки
	array(
		'parents' => 5, // Категория с товарами
		'innerJoin' => array(
			'Data' => array('class' => 'msProductData')
		),
		'select' => array('Data' => 'price'),
		'sortby' => 'Data.price',
		'sortdir' => 'asc',
	)
);
if (!empty($result)) {
	echo $result['price'];
}
// При желании можно лог посмотреть
echo '<pre>';
print_r($modx->getPlaceholder('pdoTools.log'));            
                Оу, большое спасибо! Даже не думал, что так легко можно их зассумонить. 
Вот что вышло (вывожу минимальную цену товара из категорий, включая мультикатегории, имея список id товаров):
                    Вот что вышло (вывожу минимальную цену товара из категорий, включая мультикатегории, имея список id товаров):
$pdo = $modx->getService('pdoFetch');
	$result = $pdo->getArray(
		'msProduct',
		array(
			'deleted' => false,
			'published' => true,
			'Data.price:>' => '0',
			'id:IN' => $ids,
		),
		array(
			'innerJoin' => array(
				'Data' => array('class' => 'msProductData')
			),
			'select' => array('Data' => 'price'),
			'sortby' => 'Data.price',
			'sortdir' => 'asc',
			'limit' => '1',
		)
	);
	if (!empty($result)) {
		if (substr($result['price'], -3, 3) == ".00") {
			$min = substr($result['price'],0,-3);
		}
		$modx->setPlaceholder('catalog.min',$min);
	}            'id:IN' => $ids,Указание parents и так выберет нужные id товаров с учетом мультикатегорий MS2.
Работает ровно как указание parents в msProducts и pdoResources.
                Добрый день! Подскажите, пожалуйста, при такой конструкции запроса:
$pdo = $modx->getService('pdoFetch');
$result = $pdo->getArray(
'msProduct',
array(
'id' => $id,),
array(
'innerJoin' => array(
'Data' => array('class' => 'msProductData')),
'select' => array('Data' => '*'),
'limit' => '1',
)
);
как заджойнить табличку modx_ms2_product_options, т.е. вместе со свойствами товара получить ещё и опции?
                    $pdo = $modx->getService('pdoFetch');
$result = $pdo->getArray(
'msProduct',
array(
'id' => $id,),
array(
'innerJoin' => array(
'Data' => array('class' => 'msProductData')),
'select' => array('Data' => '*'),
'limit' => '1',
)
);
как заджойнить табличку modx_ms2_product_options, т.е. вместе со свойствами товара получить ещё и опции?
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.