Не работают запросы к своей таблице в базе
        Здравствуйте!
Я создал две таблицы в базе с префиксом 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') — пожалуйста, сколько угодно…
Я понимаю, что Вы наверняка занятой человек, а мой вопрос может показаться слегка туповатым… но, если найдете минутку, то я попросил бы Вас объяснить, почему именно так… или подсказать, в какую сторону подумать… Потому что хочется придти к какому-то более фундаментальному понимаю…
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.