MIGX DB как вывести данные?
Добрый день! Не могу понять, как можно вывести данные из таблицы MIGX DB, такого вида:
Название категории 1 (имя ресурса)
Название категории 2 (имя ресурса)
Есть ресурс, в нем TV типа migxdb, в этом tv записи.
Нужна иерархия в несколько уровней, примерно как в pdoMenu, только вместо вложенных ресурсов записи из таблицы MIGX DB.
Сейчас получается вывести только полностью все записи из таблицы, вывожу так:
Делала по данной статье: http://www.tale.by/blog/tovaryi-iz-otdelnoj-tabliczyi-(migxdb).html
Думаю что нужно выбирать данные из 2-х таблиц, из собственной modx_record_top_list и из modx_site_content через innerJoin. Но проблема в том, что я вообще не представляю как это сделать + еще вывести в структурированном порядке…
До этого не работала ни со своей таблицей, ни с MIGX DB. Помогите пожалуйста разобраться, как это можно сделать
Название категории 1 (имя ресурса)
- Запись из этой категории 1
- Запись из этой категории 2
- Запись из этой категории 3
- Запись из этой категории 4 и тд.
Название категории 2 (имя ресурса)
- Запись из этой категории1
- Запись из этой категории 2
- Запись из этой категории 3
- Запись из этой категории 4 и тд.
Есть ресурс, в нем TV типа migxdb, в этом tv записи.
Нужна иерархия в несколько уровней, примерно как в pdoMenu, только вместо вложенных ресурсов записи из таблицы MIGX DB.
Сейчас получается вывести только полностью все записи из таблицы, вывожу так:
[[pdoResources?
&parents=`0`
&class=`recordTopList`
&loadModels=`toplist`
&tpl=`tpl.topList.mdb`
&sortby=``
&sortdir=``
&where=`{ "published:=":"1" }`
]]
Или вот так:[[!migxLoopCollection?
&packageName=`toplist`
&classname=`recordTopList`
&where=`{ "published":"1" }`
&tpl=`tpl.topList.mdb`
]]
В самой таблице, в БД, есть поле resource_id, в котором хранится id родителя.Делала по данной статье: http://www.tale.by/blog/tovaryi-iz-otdelnoj-tabliczyi-(migxdb).html
Думаю что нужно выбирать данные из 2-х таблиц, из собственной modx_record_top_list и из modx_site_content через innerJoin. Но проблема в том, что я вообще не представляю как это сделать + еще вывести в структурированном порядке…
До этого не работала ни со своей таблицей, ни с MIGX DB. Помогите пожалуйста разобраться, как это можно сделать
Комментарии: 2
Примерный код сниппета, например назовем его getTopList
Пример вызова сниппета
<?
$pdo = $modx->getService('pdoFetch');
$ids = $modx->getOption('ids', $scriptProperties, '');
$tpl = $modx->getOption('tpl', $scriptProperties, '');
$data = [];
if (!$ids) {
return;
}
$ids = explode(',', $ids);
$q = $modx->newQuery('recordTopList'); // имя вашего класса
$q->leftJoin('modResource', 'Resource', 'recordTopList.resource_id = Resource.id');
$q->where([
'Resource.published' => 1,
'Resource.id:IN' => $ids
]);
$q->select([
'Resource.pagetitle as pagetitle',
'Resource.id as rid',
'recordTopList.*'
]);
if ($q->prepare() && $q->stmt->execute()) {
while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
$data[$row['rid']][] = $row;
}
}
if (!empty($data)) {
return $pdo->getChunk($tpl, [
'data' => $data
]);
}
Пример вызова сниппета
[[!getTopList?
&ids=`10,20` //id ресурсов
&tpl=`@INLINE
{foreach $data as $rid => $records}
<div>
{$rid}, {$records[0]['pagetitle']}
{foreach $records as $record}
{$record.resource_id}
{/foreach}
</div>
{/foreach}
`
]]
Андрей, большое вам спасибо, очень выручили! Сниппет работает именно так, как было нужно
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.