<?php
$q = $modx->newQuery('modResource');
$q->leftJoin('modTemplateVarResource', 'Price', 'modResource.id = Price.contentid AND Price.tmplvarid = 14');
$q->leftJoin('modTemplateVarResource', 'Currency', 'modResource.id = Currency.contentid AND Currency.tmplvarid = 15');
$q->groupby('modResource.id');
$q->select([
'modResource.*',
'`Price`.`id` AS `Price_id`, `Price`.`tmplvarid` AS `Price_tmplvarid`, `Price`.`contentid` AS `Price_contentid`, `Price`.`value` AS `Price_value`',
'`Currency`.`id` AS `Currency_id`, `Currency`.`tmplvarid` AS `Currency_tmplvarid`, `Currency`.`contentid` AS `Currency_contentid`, `Currency`.`value` AS `Currency_value`',
'IFNULL(`Price`.`value`, 0) AS `Price_value`',
'IFNULL(`Currency`.`value`, "RUB") AS `Currency_value`'
]);
$q->where([
[
'Price.value:!=' => 0,
'Price.value:IS NOT' => NULL
], [
'Currency.value' => 'RUB',
'OR:Currency.value:IS' => NULL
]
]);
$count = $modx->getCount('modResource', $q);
$q->limit(100);
if ($q->prepare() && $q->stmt->execute()) {
$resources = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
}
echo "<p>Всего ресурсов найдено: {$count}</p><hr>";
foreach($resources as $resource) {
echo "<p><b>{$resource['pagetitle']} ({$resource['id']})</b> -
{$resource['Price_value']} {$resource['Currency_value']}</p>";
}Выборка ресурсов с TV-параметрами
19 ноября 2015, 18:51
Объектная
Наткнулся на эту маленькую статью-шпаргалку у Вас.
Это прям то, что нужно мне. Только правда не всё понятно в скрипте Вашем мне.
Если не сложно, можно у Вас узнать, что значат второй и третий аргумент в подключаемом методе leftJoin?
В этом куске кода
$q->leftJoin('modTemplateVarResource', 'Price', 'modResource.id = Price.contentid AND Price.tmplvarid = 14'); $q->leftJoin('modTemplateVarResource', 'Currency', 'modResource.id = Currency.contentid AND Currency.tmplvarid = 15');Не подскажете ли ответ на следующий вопрос по этой причине,
как вывести в таблицу в своей CMP как раз id ресурса, его pagetitle и значение его TV?
Получилось разобраться самому!
Ну вот, хорошему человеку напишешь и сразу из космоса ответ приходит)))
А как можно вывести ресурсы с разными TV и их значениями?
Я делаю данный скрипт из этой статьи, а мне не выводит ресурсы с TV, если у них разные TV имеют значения. То есть у одних ресурсов есть значения в TV1 (например), а у других в TV2 и не выводит ничего. Показывает 0 ресурсов.
Попробуйте подробно описать свою задачу на modx.pro, добавить в вопрос код, который что-то выводит, код, который не работает. Там много специалистов, наверняка кто-то поможет.
Илья, спасибо Вам за совет.