Выборка сниппетом товаров со своими условиями xpdo

Хочу сделать выбор ресурсов с классом msProduct и условием из таблицы ms2_products. Например вывести все товары с 'source' => '2'. Есть готовые решения в стиле pdoTools, но я его, к своему сожалению, пока не изучил и совсем не понимаю. Хочу сделать скрипт в стиле xPDO, что-то типа
<?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, но тоже мало врубился, в БД он в физическом виде не указан.
Александр Мелихов
08 мая 2014, 14:17
modx.pro
1
3 297
0

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

Василий Наумкин
08 мая 2014, 19:11
0
bezumkin.ru/modx/minishop2/snippets/917/
[[!msProducts?
	&parents=`0`
	&where=`{"Data.source":2}`
]]
    Александр Мелихов
    08 мая 2014, 20:58
    0
    Это мне, конечно, понятно, но мне надо выборку сделать именно в коде сниппета, чтобы потом произвести с выбранными ресурсами действия. Спасибо за ответ, может быть, использую runSnippet
Наумов Алексей
08 мая 2014, 23:06
1
0
$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'];
}
    Наумов Алексей
    08 мая 2014, 23:08
    0
    Соответственно внимательно изучаем как работают функции newQuery, setClassAlias, leftJoin, getSelectColumns и другие
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    5