Не работает getCollection в консоли
Всем привет!
Столкнулся с необъяснимой ситуацией, сломал с ней голову…
Есть банальный скрипт, который выбирает все ресурсы с определенным TV и он прекрасно работает, НО! только при вызове из браузера. В консоли напрочь отказывается работать. Консоль имею ввиду настоящую, не дополнение к modx.
Код следующий:
Подскажите, с чем это может быть связано? Как указал в коде выше, сам modx подключается корректно — просто заголовок страницы в консоль выводится, но getCollection ни в какую не хочет там работать! Пишет, что нулевая выборка. То есть не работает именно getCollection, в то время, как getObject прекрасно отрабатывает.
Спасибо!
Столкнулся с необъяснимой ситуацией, сломал с ней голову…
Есть банальный скрипт, который выбирает все ресурсы с определенным TV и он прекрасно работает, НО! только при вызове из браузера. В консоли напрочь отказывается работать. Консоль имею ввиду настоящую, не дополнение к modx.
Код следующий:
<?php
define('MODX_API_MODE', true);
require_once('................./index.php'); // тут полный путь к файлу
$modx = new modX();
$modx->initialize('web');
// здесь проверяем подключился ли modx и он подключился - в консоль выводится заголовок страницы
$res = $modx->getObject('modResource', 1);
echo $res->get('pagetitle');
// а теперь задаем условия выборки для getCollection
$category = 'retail';
$q = $modx->newQuery('modResource');
$q->leftJoin('modTemplateVarResource', 'TemplateVarResources');
$q->leftJoin('modTemplateVar', 'tv', "tv.id=TemplateVarResources.tmplvarid");
$q->where(array(
array(
'tv.name' => 'category', // имя tv по которому ищем
'TemplateVarResources.value:LIKE' => '%'.$category.'%', // условие поиска
'deleted' => 0, // не удалён
'published' => 1, // опубликован
'publishedon:>' => strtotime(date('Y-m-d')) // опубликован сегодня
)
));
// получаем все ресурсы с указанной категорией
$resources = $modx->getCollection('modResource', $q);
// и подсчитываем их: по итогу в браузере выводится число таких страниц, НО в консоли выводится 0 (ноль).
echo count($resources);Подскажите, с чем это может быть связано? Как указал в коде выше, сам modx подключается корректно — просто заголовок страницы в консоль выводится, но getCollection ни в какую не хочет там работать! Пишет, что нулевая выборка. То есть не работает именно getCollection, в то время, как getObject прекрасно отрабатывает.
Спасибо!
Комментарии: 10
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Откуда возьмётся ресурс в консоле, да и ещё в апи-мод?почему getCollection тогда не хочет?
Я так полагаю ошибок в логах нет?
запусти код и после посмотри в журнале ошибок modx если вывод кол-ва ресурсов?
Если нет — то целиком весь используемый код выкладывай.
Но здесь реально было странно — ну не отрабатывает getCollection при вызове из консоли хоть тресни! Ну магия же, да? Короче начал по строчке разбираться и щито би ви думали?!
Виновник торжества:
а именно ДРУГОЙ! ЧАСОВОЙ! ПОЯС! НА! СЕРВЕРЕ!
Соответственно условие
из браузера выполнялось, так как на сайте пояс установлен Europe/Moscow, а на сервере мать его UTC!
И из-за этой разницы при вызове срипта в консоли ничего не находилось и соотв getCollection возвращал ноль ресурсов! Боги! Так протупить!
Фейспалм!
Только при работе из браузера запрос обычно обслуживает php-fpm с одним конфигом, в при запуске из консоли php-cli с другим.
MODX должен пытаться выставить правильную временную зону всё равно, но конфиг PHP может запрещать это делать.