Выборка сниппетом товаров со своими условиями xpdo
Хочу сделать выбор ресурсов с классом msProduct и условием из таблицы ms2_products. Например вывести все товары с 'source' => '2'. Есть готовые решения в стиле pdoTools, но я его, к своему сожалению, пока не изучил и совсем не понимаю. Хочу сделать скрипт в стиле xPDO, что-то типа
Читал что-то про класс msProductData, но тоже мало врубился, в БД он в физическом виде не указан.
<?php
$q = $modx->newQuery('msProduct');
$q->where(array('source' => '2'));
$col = $modx->getCollection('msProduct', $q);
foreach ($col as $item){
print $item->get('id').'<br />';
}
Но по данному шаблону работают только условия из таблицы site_content. Как правильно приджоинить таблицу в стиле xPDO, чтобы сделать подобную выборку?Читал что-то про класс msProductData, но тоже мало врубился, в БД он в физическом виде не указан.
Комментарии: 5
Это мне, конечно, понятно, но мне надо выборку сделать именно в коде сниппета, чтобы потом произвести с выбранными ресурсами действия. Спасибо за ответ, может быть, использую runSnippet
Открой для себя prepareSnippet.
$query = $this->modx->newQuery('msProduct');
$query->setClassAlias('Product');
$query->leftJoin('msProductData','Data', '`Product`.`id` = `Data`.`id`');
$query->select($this->modx->getSelectColumns('msProduct','Product',''));
$query->select($this->modx->getSelectColumns('msProductData','Data','data.'));
$query->where(array(
'`Data`.`source`' => 2,
));
$query->sortby("pagetitle", "ASC");
$query->prepare();
$query->stmt->execute();
$rows = $query->stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($rows as $row){
$id = $row['id'];
}
Соответственно внимательно изучаем как работают функции newQuery, setClassAlias, leftJoin, getSelectColumns и другие
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.