1 дек. 2014 г., 19:18

CMP Generator & Relationships

Всем привет. Подскажите, как сделать отношение между таблицами при построении пакета с помощью CMPGenerator. Достаточно просто в xml их дописать в ручную или же есть еще какие то моменты?
Я очень сомневаюсь, что он умеет работать с отношениями, хотя и не проверял эти мысли (просто так думаю). Но может у кого-то будут другие мысли, подкрепленные фактами.
Это понятно. Возможно я не правильно в чем то выразился. CMP нужен для того что бы сформировать модель (пакет) на основании Таблиц БД. Далее я так понимаю он не принимает никакой деятельности в дальнейшей жизни пакета. Так вот. Мой вопрос: если я открою уже сгенерированную модель в часности ...schema.xml и просто допишу в нее отношения, они работать будут?
п.с. понравился сам пакет поскольку проект предстоит многотабличный и писать модели заколебало уже… а тут такая вещь вкусная.
Как я не раз уже говорил много где, MODX не использует в своей работе XML-схему модели вообще никогда, то есть для него она что есть, что нету. Используется XML-схема только в случае, если на ее основе надо сгенерировать map-файлы. Как это работает, статья в помощь.
При работе же с CMPGenerator, у нас на выходе уже имеются готовые map-файлы и прочие классы, то есть дальше нам XML-схема вообще не нужна. Следовательно прописывать отношения нужно прям в map-файлах. Здесь уточню по вашему вопросу, что изменения в map-файлы учитываются сразу же, ибо MODX читает их при каждом обращении к нему (естественно один раз за запрос (include_once)).
И к слову сразу замечу конкретно по своей методике: таблицы часто имеют называния во множественном числе (к примеру, modx_users), при этом класс как правило имеет название в единственном числе modUser (соответственно и название файла moduser.class.php). А CMPGenerator название класса даст по названию таблицы, то есть modusers.class.php. Я это к тому, что все равно после первичной генерации модели приходится имена файлов и классов подправлять и далее они уже сопровождаются в ручном режиме. Единственное, что когда меняются структуры таблиц, то генеришь отдельный пакет (чтобы не перетирать рабочий) и описания колонок уже копипастишь из сгенеренной мапы в рабочую.
ай красота… значит, в [class].map.inc.php добавляем, к примеру
'aggregates' => array( 'PrimaryGroup' => array ( 'class' => 'modUserGroup', 'local' => 'primary_group', 'foreign' => 'id', 'cardinality' => 'one', 'owner' => 'foreign', ) )
и получаем
class->getOne('PrimaryGroup');
п.с. за статью спасибо читана, да и вообще за материалы
и получаем
Да, именно так. Но если хотите действительно освоить этот механизм, то читайте это, чтобы освоить, к примеру, вот такие фокусы.

Добавить комментарий