Вывод наименьшей цены из списка товаров в категори
Здравствуйте.
Уже вхожу в тотальный затуп, но так и не получается реализовать в 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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
— но все равно нет никакого результата и в логах пустота…
Вот что вышло (вывожу минимальную цену товара из категорий, включая мультикатегории, имея список id товаров):
Работает ровно как указание 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, т.е. вместе со свойствами товара получить ещё и опции?