We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 35719
    • 14 Posts
    Здравствуйте, как выполнять запрос к базе данных в modx revo?
    Я знаю что в Evolution существует $modx->db->query() или $modx->db->select, а в revolution я так и не понял как выполнять запросы.
      • 21786
      • 13 Posts
        • 35719
        • 14 Posts
        Подскажите куда вписывать имя таблицы? как xPDO узнает из какой таблицы делать выборку?
        И после получения колекции $boxes = $xpdo->getCollection(’Box’,$query); как с ней работать(вывести)?
          • 35719
          • 14 Posts
          Весь день убил но так и не понял этот xPDO.
          Как выполнить такой запрос [select * from modx_item where id_doc = 10] и вывести его?
          Заранее благодарен!!!
            • 21786
            • 13 Posts
            Например так:

            $query = $xpdo->newQuery('Item');
            $query -> where(array(
               'id_doc:>=' => 15
            ));
            $items = $xpdo->getCollection('Item',$query);
            foreach ($items as $item) {
               print $item->get('id_doc');
            }


            Дополню...Вместо Item необходимо указать название класса, соответствующее таблице. Посмотреть можно в ’/core/model/schema’ (вроде тут) =)
              • 35719
              • 14 Posts
              Спасибо за ответ, но почему то после вставки этого кода страница вообще не отображается.
              Я поменял $xpdo->newQuery на $modx->newQuery страница начала отображаться но результат не выводит, в чем может быть проблема и почему на $xpdo у меня ошибка?

              Логику я понял, мне кажется проблема в названии таблицы, честно я вообще не понимаю откуда xPDO знает с какой таблицей ей работать.
              Пока я додумался до этого:
              создаем объект $xpdo->newQuery(’Название таблицы с большой буквы без префикса’);
              получаем коллекцию $modx->getCollection(’Название таблицы с большой буквы без префикса’, Запрос);

              по идее всё должно работать но не работает, страница отображается но не выводит записи.

              вот полный код:
              $query = $modx->newQuery('Item');
              $query -> where(array(
                 'id_doc:=' => 20
              ));
              $items = $modx->getCollection('Item',$query);
              foreach ($items as $item) {
                 print $item->get('title');
              }
              


              имя таблицы: modx_item поля: id_item|id_doc|title|link в ней две записи с id_doc = 20
                • 35719
                • 14 Posts
                Запарился с этим xPDO и сделал по старинке
                $conn = mysql_connect ("localhost", "root", "") or die ("Соединение не установлено!");
                mysql_select_db("revodb") or die("База данных не найдена");
                $query = "SELECT * FROM modx_item";
                $result = mysql_query("SELECT * FROM modx_item where id_doc = '".$id."'");
                mysql_close($conn);
                
                while ($line = mysql_fetch_array($result)) {
                   echo $line[3];
                }
                
                  • 35719
                  • 14 Posts
                  Большое спасибо за ответы, теперь разобрался!
                    • 2371
                    • 29 Posts
                    $results = $modx->query("SELECT * FROM modx_users");
                    while ($r = $results->fetch(PDO::FETCH_ASSOC)) {
                            print_r($r); exit;
                    }