mishk0x29A
@mishk0x29A

Как правильно составить схему для модели и использовать её?

Есть две модели: раздел форума и тема форума.
Необходимо вывести список последних тем.
Схема разделов:
<object class="ForumSections" table="forum_sections" extends="xPDOSimpleObject">
	<field key="title" dbtype="varchar" precision="32" phptype="string" null="false" />
	<field key="alias" dbtype="varchar" precision="16" phptype="string" null="false" />
</object>

Схема тем (упрощённая):
<object class="ForumTopics" table="forum_topics" extends="xPDOSimpleObject">
	<field key="section" dbtype="tinyint" precision="3" attributes="unsigned" phptype="integer" null="false" />
	<field key="author" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" />
	<field key="title" dbtype="varchar" precision="255" phptype="string" null="false" />
</object>


Что нужно добавить в файлы схем, чтобы составить запрос ниже?
SELECT * FROM `modx_forum_topics` JOIN `modx_forum_sections` ON `modx_forum_topics`.`section` = `modx_forum_sections`.`id`

И как составить запрос через xPDO?
Читал руководство от Боба, а также документацию, но уже запутался, что куда.
  • Вопрос задан
  • 2842 просмотра
Пригласить эксперта
Ответы на вопрос 1
@alvisX
По хорошему, в схему нужно добавить связи (composite или aggregate). Потом сгенерировать автоматически или ручками map файлы. После этого объекты можно получать так:
$TopicSection= $xpdo->getObject('TopicSection',$id);
$Topics= $TopicSection->getMany('Topics');


Легче делать так:
1. Создать таблицы в БД с помощью рук
2. Сгенерировать по ним (таблицам) схему, например с помощью расширения CMP Generator из репозитория
3. Добавить связи в схему (подробнее тут)
4. Перегенерировать модель с помощью того же CMP Generator, сняв галку "Build schema", иначе схема перезапишется

Теперь можно получать любой объект с помощью getObject и его зависимости через getOne и getMany
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы