/*offtopic
Тихо сам с собою я веду беседы...
Забавная это штука XPDO.... Уже задумался: а зачем весь остальной код... Взять чистый index.php инициировать xpdo и вперед...
*/
Не знаю правильно или нет, но прописал все связи и прямые и обратные и если на таблицу идет несколько связей прописывал все.
Выложу свои мысли (вдруг меня поправят или кому-нибудь пригодится).
Например таблица:
"id - name" для адресных списков. содержит название улиц, городов, районов, округов и прочих названий и наименований.
Сама таблица в схеме выглядит так:
<object class="GeoLibrary" table="geo_library" extends="xPDOObject">
<field key="Id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" />
<field key="Name" dbtype="varchar" precision="255" phptype="string" null="true" index="index" />
связи в ней прописал так:
<aggregate alias="geo_okrug" class="GeoObjects" local="id" foreign="okrug_id" cardinality="many" owner="local" />
<aggregate alias="geo_area" class="GeoObjects" local="id" foreign="area_id" cardinality="many" owner="local" />
<aggregate alias="geo_street" class="GeoObjects" local="id" foreign="street_id" cardinality="many" owner="local" />
Таблица, описывающая адрес некоего здания, выглядит примерно так:
id - okrug_id(город) - area_id(район) - street_id(улица) - house(номер дома)
Связи из нее выглядят похоже:
<aggregate alias="geo_okrug" class="GeoLibrary" local="okrug_id" foreign="id" cardinality="one" owner="foreign" />
<aggregate alias="geo_area" class="GeoLibrary" local="area_id" foreign="id" cardinality="one" owner="foreign" />
<aggregate alias="geo_street" class="GeoLibrary" local="street_id" foreign="id" cardinality="one" owner="foreign" />
По скорости:
Выборка с 7 JOIN'ами, напрямую голым php-SQL, у меня вышла в 14 раз шустрее нежели через xPDO...
Но код на xPDO более удобочитаем (после вдумчивого изучения getCollectionGraph) и легче изменяем...
Но и объем кода растёт и быстродействие...Короче, никак для себя не могу определится нравится оно мне или нет.
P.S. И кстати, гуя я на это не нашел, и как только связи в таблицах становятся более сложными - в XML можно мозг сломать.
[ed. note: Tohin last edited this post 13 years, 10 months ago.]