Ошибка в результате пользовательского запроса Новый


Здравствуйте!
Столкнулся вот с каким багом: выполняя в консоли запрос:
<?php
$q = $this->modx->newQuery('msProduct');
        $q->where(array(
            "id" => 1
        ));
$q->prepare();
$q->stmt->execute();
$productsData = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
echo "<pre>";
print_r($productsData);
Получаю результат:
Array
(
    [0] => Array
        (
            [msProduct_id] => 1
            [msProduct_type] => document
            [msProduct_contentType] => text/html
            [msProduct_pagetitle] => Главная
            [msProduct_longtitle] => 
            [msProduct_description] => Главная страница сайта
            [msProduct_alias] => index
            [msProduct_link_attributes] => 
            [msProduct_published] => 1
            [msProduct_pub_date] => 0
            [msProduct_unpub_date] => 0
            [msProduct_parent] => 0
            [msProduct_isfolder] => 1
            [msProduct_introtext] => 
            [msProduct_content] => 
            [msProduct_richtext] => 1
            [msProduct_template] => 1
            [msProduct_menuindex] => 0
            [msProduct_searchable] => 1
            [msProduct_cacheable] => 1
            [msProduct_createdby] => 1
            [msProduct_createdon] => 1437011322
            [msProduct_editedby] => 1
            [msProduct_editedon] => 1475451509
            [msProduct_deleted] => 0
            [msProduct_deletedon] => 0
            [msProduct_deletedby] => 0
            [msProduct_publishedon] => 0
            [msProduct_publishedby] => 0
            [msProduct_menutitle] => 
            [msProduct_donthit] => 0
            [msProduct_privateweb] => 0
            [msProduct_privatemgr] => 0
            [msProduct_content_dispo] => 0
            [msProduct_hidemenu] => 0
            [msProduct_class_key] => modDocument
            [msProduct_context_key] => web
            [msProduct_content_type] => 1
            [msProduct_uri] => index.html
            [msProduct_uri_override] => 0
            [msProduct_hide_children_in_tree] => 0
            [msProduct_show_in_tree] => 1
            [msProduct_properties] => 
        )

)
Спросите, что же тут такого. А дело в том, что главная страница на сайте не является ни категорией ни, уж тем более, продуктом. В подтверждение этому, даже в результате имеется вот эта строчка:
[msProduct_class_key] => modDocument
Помогите пожалуйста разобраться. Может проблема у меня логикой и я чего-то не знаю, но я все время думал что в таких случаях выборка идет по полю class_key.
Спасибо!

UPD: Нашел заплатку. Надо добавить условие в запрос:
$q->where(array(
            "published" => 1,
            "class_key" => "msProduct"
        ));
Но хотелось бы узнать у просвященных как этот механизм работает.
20 октября 2016, 03:58    Александр   
0    244 0

Комментарии (5)

    1. Сергей Шлоков 21 октября 2016, 08:55 # 0
      В методе $modx->newQuery() класс указывается, чтобы погрузить схему, а никак не для ограничения. Для этого есть метод where().
      1. Константин Ильин 21 октября 2016, 09:44 # 0
        Вопрос «новичковый», как приводить массив, который отдает newQuery, в массив без префикса
        Array
        (
            [0] => Array
                (
                    [msProduct_id] => 1
                    [msProduct_type] => document
        	    ........
        	)
        )
        Чтобы был такого вида:
        Array
        (
            [0] => Array
                (
                    [id] => 1
                    [type] => document
        	    ........
        	)
        )
        1. Илья Уткин 21 октября 2016, 15:19 # +1
          Кажется, так
          $q->select(array('msProduct.*'));
          1. Константин Ильин 21 октября 2016, 16:15 # 0
            от блин, как все просто оказалось)) Спасибо)
        Вы должны авторизоваться, чтобы оставлять комментарии.