Ошибка в результате пользовательского запроса
Здравствуйте!
Столкнулся вот с каким багом: выполняя в консоли запрос:
Спасибо!
UPD: Нашел заплатку. Надо добавить условие в запрос:
Столкнулся вот с каким багом: выполняя в консоли запрос:
<?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"
));
Но хотелось бы узнать у просвященных как этот механизм работает. Комментарии: 5
В методе $modx->newQuery() класс указывается, чтобы погрузить схему, а никак не для ограничения. Для этого есть метод where().
Вопрос «новичковый», как приводить массив, который отдает newQuery, в массив без префикса
Array
(
[0] => Array
(
[msProduct_id] => 1
[msProduct_type] => document
........
)
)
Чтобы был такого вида:Array
(
[0] => Array
(
[id] => 1
[type] => document
........
)
)
Кажется, так
$q->select(array('msProduct.*'));
от блин, как все просто оказалось)) Спасибо)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.