Не работают запросы к своей таблице в базе
Здравствуйте!
Я создал две таблицы в базе с префиксом lead.
По инструкции сгенерировал xml.
Я создал две таблицы в базе с префиксом lead.
По инструкции сгенерировал xml.
Комментарии: 8
Здравствуйте!
Я создал две таблицы в базе с префиксом lead.
По инструкции сгенерировал xml.
Если подключить класс в сниппете с помощью
Буду рад совету! Спасибо!
Я создал две таблицы в базе с префиксом lead.
По инструкции сгенерировал xml.
<model package="lead" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM">
<object class="Service" table="service" extends="xPDOSimpleObject">
...
Пытаюсь выполнить:$q = $this->modx->newQuery('Service');
$q->where(array(
'service_id' => 7
));
if ($q->prepare() && $q->stmt->execute()) {
$arr = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
}
print_r($arr);
Но в результате только пустота. getCollection
также ничего не выдает.Если подключить класс в сниппете с помощью
getService
, то все методы работают. Только никак не удается взаимодействовать с базой с помощью xPDO. Буду рад совету! Спасибо!
Нужно подключить таблицы методом addPackage();
Так и делаю, как в Ваших статьях различных.
В конструкторе этот метод. Или так неправильно?
В конструкторе этот метод. Или так неправильно?
function __construct(modX &$modx, array $config=array()) {
$this->modx =& $modx;
$namespace = $this->modx->getObject('modNamespace', 'lead');
$basePath = $namespace->get('path');
//$assetsUrl = $this->modx->getOption('assets_url').'components/weather/';
$this->config = array_merge(array(
'basePath' => $basePath,
'corePath' => $basePath,
'modelPath' => $basePath.'model/',
//'processorsPath' => $basePath.'processors/',
//'chunksPath' => $basePath.'elements/chunks/',
//'jsUrl' => $assetsUrl.'js/',
//'cssUrl' => $assetsUrl.'css/',
//'assetsUrl' => $assetsUrl,
//'connectorUrl' => $assetsUrl.'connector.php',
), $config);
$this->modx->addPackage('lead', $this->config['modelPath'], 'lead_');
}
Что-то не так.
Смотри логи системы, разбирайся. Наверняка проблема в префиксе.
Смотри логи системы, разбирайся. Наверняка проблема в префиксе.
Спасибо за совет… я почему-то в логи и не смотрел никогда.
(ERROR @ /index.php) Could not get table name for class: Service
Похоже, что не понимает из какой таблицы тащить… буду думать.
(ERROR @ /index.php) Could not get table name for class: Service
Похоже, что не понимает из какой таблицы тащить… буду думать.
В генерируемом запросе действительно таблички нет…
SELECT `Service`.`id` AS `Service_id` FROM AS `Service` WHERE `Service`.`service_id` = '7'
SELECT `Service`.`id` AS `Service_id` FROM AS `Service` WHERE `Service`.`service_id` = '7'
А проблема не может быть в том, что у меня версия системы 2.0.4? Или на моей старушке должно тоже работать?
Василий, я решил свою проблему, но практически методом тыка, поглядывая на Ваш компонент weather.
В самом начале после работы генератора xml-схемы я получал:
(modx_lead_service — это название моей таблицы)
1. Саму xml-ку.
2. файл service.class.php — с классом Service
+то, что в папке mysql
И я писал свой код прямо в этот класс Service…
В итоге я создал новый файл my.class.php, в нем создал class My, воткнул в него такой же конструктор…
В сниппете делаю getService() для класса My… и — все работает! методы из класса My с newQuery('Service') — пожалуйста, сколько угодно…
Я понимаю, что Вы наверняка занятой человек, а мой вопрос может показаться слегка туповатым… но, если найдете минутку, то я попросил бы Вас объяснить, почему именно так… или подсказать, в какую сторону подумать… Потому что хочется придти к какому-то более фундаментальному понимаю…
В самом начале после работы генератора xml-схемы я получал:
(modx_lead_service — это название моей таблицы)
1. Саму xml-ку.
2. файл service.class.php — с классом Service
+то, что в папке mysql
И я писал свой код прямо в этот класс Service…
В итоге я создал новый файл my.class.php, в нем создал class My, воткнул в него такой же конструктор…
В сниппете делаю getService() для класса My… и — все работает! методы из класса My с newQuery('Service') — пожалуйста, сколько угодно…
Я понимаю, что Вы наверняка занятой человек, а мой вопрос может показаться слегка туповатым… но, если найдете минутку, то я попросил бы Вас объяснить, почему именно так… или подсказать, в какую сторону подумать… Потому что хочется придти к какому-то более фундаментальному понимаю…
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.