Не работают запросы к своей таблице в базе

Здравствуйте!

Я создал две таблицы в базе с префиксом lead.

По инструкции сгенерировал xml.

Иван
15 апреля 2013, 08:34
modx.pro
1 324
0

Комментарии: 8

Иван
15 апреля 2013, 12:38
0
Здравствуйте!

Я создал две таблицы в базе с префиксом 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.

Буду рад совету! Спасибо!
    Василий Наумкин
    15 апреля 2013, 13:04
    0
    Нужно подключить таблицы методом addPackage();
      Иван
      15 апреля 2013, 13:22
      0
      Так и делаю, как в Ваших статьях различных.
      В конструкторе этот метод. Или так неправильно?

      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_');
            
         
        }
        Василий Наумкин
        15 апреля 2013, 14:45
        0
        Что-то не так.

        Смотри логи системы, разбирайся. Наверняка проблема в префиксе.
          Иван
          17 апреля 2013, 10:55
          0
          Спасибо за совет… я почему-то в логи и не смотрел никогда.
          (ERROR @ /index.php) Could not get table name for class: Service

          Похоже, что не понимает из какой таблицы тащить… буду думать.

            Иван
            17 апреля 2013, 14:26
            0
            В генерируемом запросе действительно таблички нет…

            SELECT `Service`.`id` AS `Service_id` FROM AS `Service` WHERE `Service`.`service_id` = '7'
            Иван
            17 апреля 2013, 14:38
            0
            А проблема не может быть в том, что у меня версия системы 2.0.4? Или на моей старушке должно тоже работать?
              Иван
              17 апреля 2013, 16:17
              0
              Василий, я решил свою проблему, но практически методом тыка, поглядывая на Ваш компонент weather.

              В самом начале после работы генератора xml-схемы я получал:

              (modx_lead_service — это название моей таблицы)

              1. Саму xml-ку.
              2. файл service.class.php — с классом Service
              +то, что в папке mysql

              И я писал свой код прямо в этот класс Service…

              В итоге я создал новый файл my.class.php, в нем создал class My, воткнул в него такой же конструктор…
              В сниппете делаю getService() для класса My… и — все работает! методы из класса My с newQuery('Service') — пожалуйста, сколько угодно…

              Я понимаю, что Вы наверняка занятой человек, а мой вопрос может показаться слегка туповатым… но, если найдете минутку, то я попросил бы Вас объяснить, почему именно так… или подсказать, в какую сторону подумать… Потому что хочется придти к какому-то более фундаментальному понимаю…
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        8