Артур Шевченко

Артур Шевченко

Был в сети Вчера в 20:48
Заказы принимаю
Отправить деньги
Обычно для компонентов не требуется указывать префикс таблиц в методе addPackage().
И кажется ты не понимаешь что это за магические письмена
$q->leftJoin('goodStarVoteCount', 'countaverage', 'modResource.id = countaverage.thread');
Первым аргументом в метод leftJoin передаётся имя класса ('goodStarVoteCount'); вторым псевдоним для таблицы ( 'countaverage'), если не передать будет взято имя класса; третьим аргументом передаётся условие соединение таблиц как в операторе ON в SQL ( 'modResource.id = countaverage.thread').
На чистом SQL запрос будет примерно таким
SELCET `modResource`.`id` as `id`, `countaverage`.`countaverage` as `count` FROM `modx_site_content` as `modResource`
LEFT JOIN `modx_good_stars_vote_count` as  `countaverage` ON `modResource`.`id` = `countaverage`.`thread`
WHERE `modResource`.`published` = 1 AND  `modResource`.`deleted` = 0
Как видишь в секциях SELECT и ON используется псевдоним таблицы, в xPDO тоже надо использовать псевдонимы, если они указаны в leftJoin или setTableAlias. Поэтому вот это всё
'modTemplateVarResource.preview.value as preview',
'modTemplateVarResource.event_date.value as event_date',
'modTemplateVarResource.event_date_end.value as event_date_end',
'modTemplateVarResource.event_city.value as event_city',
'goodStarVoteCount.countaverage as countaverage'
неверно, должно быть так
'preview.value as preview',
'event_date.value as event_date',
'event_date_end.value as event_date_end',
'event_city.value as event_city',
'countaverage as countaverage'
И наконец, чтобы проверить какой же запрос будет выполнен можно сделать так
$q->prepare();
echo $q->toSQL();
Если ты прописал в шаблоне [[*context_key]], то он обязан был вывестись. Тут есть два варианта: ты его не видишь из-за стилей, ты прописал не в шаблоне. Есть и третий, ты не копировал, а набирал буквы сам и опечатался.
я думал, это уже на мое усмотрение, ан нет
Как говориться: учи матчасть))) Ты можешь сам задать алиас, но в этом случае тебе так же самостоятельно нужно задать условия для соединения таблиц
$q = $modx->newQuery('msOrder');
$q->leftJoin('msOrderProduct', 'Product', 'msOrder.id=Product.order_id AND Product.product_id = 190');
$q->select('Product.options as options');
$q->where(['msOrder.id' => 604]);
$q->prepare();
echo $q->toSQL();
$q->stmt->execute();
$r= $q->stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($r);
смогу найти как создан класс
Не очень понимаю, что ты хочешь найти, но могу с уверенностью заявить класс создан руками человека))) А в схеме можно посмотреть соответствие таблиц и классов, чтобы можно было писать запросы через XPDO.