Hello,
I need help to create schema for tags relationships for a site. Please see objects below:
<object class="tags" table="tags" extends="xPDOSimpleObject">
<field key="name" dbtype="varchar" precision="100" phptype="string" null="false" default="" />
<field key="used" dbtype="int" precision="6" phptype="integer" null="false" default="0" />
<composite alias="tagsRelationships" class="tagsRelationships" local="id" foreign="tag" cardinality="many" owner="local" />
</object>
<object class="tagsRelationships" table="tag_relationships" extends="xPDOSimpleObject">
<field key="object_key" dbtype="varchar" precision="100" phptype="string" null="false" default="" />
<field key="tag" dbtype="int" precision="10" phptype="integer" null="false" default="0" index="index" />
<field key="object" dbtype="int" precision="10" phptype="integer" null="false" default="0" index="index" />
<aggregate alias="tags" class="tags" local="tag" foreign="id" cardinality="one" owner="foreign" />
</object>
and the tag_relationships table contains tags for several resources such as blogs, galleries and ect. tag columns is for tag id and object column is for ID of resource e.g. ID of a post or a image in gallery.
object_key | tag | object
----------------------------------------------------
userBlog | 5 | 2
gallery | 5 | 2
userBlog | 5 | 3
As you see
object#2 which its type is userBlog has tag#5
object#2 which its type is gallery has tag#5
object#3 which its type is userBlog has tag#5
Now see userBlog schema and last composite:
<object class="userBlog" table="user_blog" extends="xPDOSimpleObject">
<field key="subject" dbtype="varchar" precision="255" phptype="string" null="false" default="[بدون موضوع]" />
<field key="message" dbtype="text" phptype="string" null="false" default="" />
<field key="createdon" dbtype="int" precision="20" phptype="timestamp" null="false" default="0" />
..........
<aggregate alias="modWebUser" class="modWebUser" local="author" foreign="id" cardinality="one" owner="foreign" />
<composite alias="userComment" class="userComment" local="id" foreign="parent" cardinality="many" owner="local" />
<composite alias="tagsRelationships" class="tagsRelationships" local="id" foreign="object" cardinality="many" owner="local" />
</object>
So when userBlog#2 (object#2 which its type is userBlog in above table) is deleted all rows that have object#2 will be deleted but as you can see there are differences in types for repeated IDs.
So do you have any suggestion to solve it?
The only solution i found was creating blog_tag_relationships and gallery_tag_relationships and etc....
And another related to schema question: Is below object correct?
<object class="userRelationships" table="user_relationships" extends="xPDOSimpleObject">
<field key="user1" dbtype="int" precision="10" phptype="integer" null="false" default="0" index="index" />
<field key="user2" dbtype="int" precision="10" phptype="integer" null="false" default="0" index="index" />
<field key="joint" dbtype="tinyint" precision="1" phptype="boolean" null="false" default="0" />
<field key="time" dbtype="int" precision="20" phptype="timestamp" null="false" default="0" />
<aggregate alias="modWebUser1" class="modWebUser" local="user1" foreign="id" cardinality="one" owner="foreign" />
<aggregate alias="modWebUser2" class="modWebUser" local="user2" foreign="id" cardinality="one" owner="foreign" />
</object>
Regards,
AHHP