<?xml version="1.0" encoding="UTF-8"?>
<model package="resellers" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.0">
<!-- Extended modUser -->
<object class="extUser" extends="modUser">
<composite alias="ResellerUsers" local="id" class="ResellerUser" foreign="user_id" cardinality="many" owner="local" />
</object>
<!-- Resellers table -->
<object class="Reseller" table="resellers" extends="xPDOSimpleObject">
<field key="id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" />
<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
<column key="id" collation="A" null="false" />
</index>
<!-- general data -->
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
<field key="comments" dbtype="text" phptype="string" null="false" default=""/>
<!-- activity fields -->
<field key="createdon" dbtype="datetime" phptype="datetime" null="true"/>
<field key="createdby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="editedon" dbtype="datetime" phptype="datetime" null="true"/>
<field key="editedby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="deleted" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="published" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<!-- relations -->
<composite alias="ResellerUsers" class="ResellerUser" local="id" foreign="user_id" cardinality="many" owner="local"/>
<aggregate alias="CreatedBy" class="modUser" local="createdby" foreign="id" cardinality="one" owner="foreign"/>
<aggregate alias="EditedBy" class="modUser" local="editedby" foreign="id" cardinality="one" owner="foreign"/>
</object>
<!-- Reseller / User Pivot -->
<object class="ResellerUser" table="reseller_user" extends="xPDOObject">
<!-- id fields -->
<field key="id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" />
<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
<column key="id" collation="A" null="false" />
</index>
<field key="reseller_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="user_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<!-- relations -->
<aggregate alias="Reseller" class="Reseller" local="reseller_id" foreign="id" cardinality="one" owner="foreign"/>
<aggregate alias="User" class="extUser" local="user_id" foreign="id" cardinality="one" owner="foreign"/>
</object>
<!-- Reseller / Resource Pivot -->
<object class="ResellerResource" table="reseller_resource" extends="xPDOObject">
<!-- id fields -->
<field key="id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" />
<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
<column key="id" collation="A" null="false" />
</index>
<field key="reseller_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="resource_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<!-- relations -->
<aggregate alias="Reseller" class="Reseller" local="reseller_id" foreign="id" cardinality="one" owner="foreign"/>
<aggregate alias="Resource" class="modResource" local="resource_id" foreign="id" cardinality="one" owner="foreign"/>
</object>
</model>{
"formtabs":[
{
"MIGX_id":1,
"caption":"Resellers",
"print_before_tabs":"0",
"fields":[
{
"MIGX_id":1,
"field":"name",
"caption":"Name",
"description":"Name of the reseller",
"description_is_code":"0",
"inputTV":"name",
"inputTVtype":"string",
"validation":"",
"configs":"",
"restrictive_condition":"",
"display":"",
"sourceFrom":"config",
"sources":"",
"inputOptionValues":"",
"default":"",
"useDefaultIfEmpty":"0",
"pos":1
},
{
"MIGX_id":6,
"field":"comments",
"caption":"",
"description":"",
"description_is_code":"0",
"inputTV":"comments",
"inputTVtype":"textarea",
"validation":"",
"configs":"",
"restrictive_condition":"",
"display":"",
"sourceFrom":"config",
"sources":"",
"inputOptionValues":"",
"default":"",
"useDefaultIfEmpty":"0",
"pos":2
},
{
"MIGX_id":8,
"field":"id",
"caption":"",
"description":"",
"description_is_code":"0",
"inputTV":"id",
"inputTVtype":"hidden",
"validation":"",
"configs":"",
"restrictive_condition":"",
"display":"",
"sourceFrom":"config",
"sources":"",
"inputOptionValues":"",
"default":"",
"useDefaultIfEmpty":"0",
"pos":3
}
],
"pos":1
},
{
"MIGX_id":4,
"caption":"Users",
"print_before_tabs":"0",
"fields":[
{
"MIGX_id":10,
"field":"users",
"caption":"Users",
"description":"",
"description_is_code":"0",
"inputTV":"users",
"inputTVtype":"listbox-multiple",
"validation":"",
"configs":"",
"restrictive_condition":"",
"display":"",
"sourceFrom":"config",
"sources":"",
"inputOptionValues":"@EVAL return $modx->runSnippet('migxLoopCollection',array('packageName'=>'resellers','classname'=>'extUser','tpl'=>'@CODE:[[+username]]==[[+id]]','outputSeparator'=>'||'));",
"default":"@EVAL return $modx->runSnippet(\"get_selected_users\");",
"useDefaultIfEmpty":1,
"pos":1
}
],
"pos":2
}
],
"contextmenus":"update||recall_remove_delete||remove",
"actionbuttons":"addItem||bulk||toggletrash",
"columnbuttons":"",
"filters":[
{
"MIGX_id":1,
"name":"search",
"label":"search",
"emptytext":"",
"type":"textbox",
"getlistwhere":{
"name:LIKE":"%[[+search]]%",
"OR:description:LIKE":"%[[+search]]%"
},
"getcomboprocessor":"",
"combotextfield":"",
"comboidfield":"",
"combowhere":"",
"comboclassname":"",
"combopackagename":"",
"combo_use_custom_prefix":"0",
"comboprefix":"",
"combojoins":"",
"comboparent":"",
"default":""
}
],
"extended":{
"migx_add":"Add Reseller",
"disable_add_item":"",
"add_items_directly":"",
"formcaption":"",
"update_win_title":"",
"win_id":"",
"maxRecords":"",
"addNewItemAt":"bottom",
"multiple_formtabs":"",
"multiple_formtabs_label":"",
"multiple_formtabs_field":"",
"multiple_formtabs_optionstext":"",
"multiple_formtabs_optionsvalue":"",
"actionbuttonsperrow":4,
"winbuttonslist":"",
"extrahandlers":"",
"filtersperrow":4,
"packageName":"resellers",
"classname":"Reseller",
"task":"",
"getlistsort":"",
"getlistsortdir":"",
"sortconfig":"",
"gridpagesize":"",
"use_custom_prefix":"0",
"prefix":"",
"grid":"",
"gridload_mode":1,
"check_resid":1,
"check_resid_TV":"",
"join_alias":"",
"has_jointable":"yes",
"getlistwhere":"",
"joins":[
{
"alias":"ResellerUsers"
}
],
"hooksnippets":{
"aftersave":"save_reseller_users"
},
"cmpmaincaption":"Resellers",
"cmptabcaption":"All Resellers",
"cmptabdescription":"",
"cmptabcontroller":"",
"winbuttons":"",
"onsubmitsuccess":"",
"submitparams":""
},
"columns":[
{
"MIGX_id":1,
"header":"ID",
"dataIndex":"id",
"width":"",
"sortable":true,
"show_in_grid":1,
"customrenderer":"",
"renderer":"",
"clickaction":"",
"selectorconfig":"",
"renderchunktpl":"",
"renderoptions":"",
"editor":""
},
{
"MIGX_id":2,
"header":"Name",
"dataIndex":"name",
"width":"",
"sortable":"false",
"show_in_grid":1,
"customrenderer":"",
"renderer":"",
"clickaction":"",
"selectorconfig":"",
"renderchunktpl":"",
"renderoptions":"",
"editor":""
},
{
"MIGX_id":3,
"header":"Comments",
"dataIndex":"comments",
"width":"",
"sortable":"false",
"show_in_grid":1,
"customrenderer":"",
"renderer":"",
"clickaction":"",
"selectorconfig":"",
"renderchunktpl":"",
"renderoptions":"",
"editor":""
},
{
"MIGX_id":4,
"header":"Users",
"dataIndex":"users",
"width":"",
"sortable":"false",
"show_in_grid":1,
"customrenderer":"",
"renderer":"",
"clickaction":"",
"selectorconfig":"",
"renderchunktpl":"",
"renderoptions":"",
"editor":""
}
]
}This question has been answered by Bruno17. See the first response.
will come back tomorrow with some help.
xPDO is also very confusing to me. I'm missing Eloquent more and more.
You won't be happy with xPDO after using that other month-named CMS... good luck.
using joins in the grid works only for one2one - Relations.
If you need to fetch one2many - Relations into one field, you can do it with a aftergetfields - hook-snippet.
https://github.com/Bruno17/MIGX/blob/master/core/components/migx/processors/mgr/default/fields.php
you can add values to the 'record_fields' of the object.
For showing them in a grid-column, you can use the renderchunk-renderer.
<?xml version="1.0" encoding="UTF-8"?>
<model package="resellers" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.0">
<!-- Resellers table -->
<object class="Reseller" table="resellers" extends="xPDOSimpleObject">
<field key="id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" />
<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
<column key="id" collation="A" null="false" />
</index>
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
<field key="comments" dbtype="text" phptype="string" null="false" default=""/>
<field key="createdon" dbtype="datetime" phptype="datetime" null="true"/>
<field key="createdby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="editedon" dbtype="datetime" phptype="datetime" null="true"/>
<field key="editedby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="deleted" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="published" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<composite alias="ResellerProducts" class="ResellerProduct" local="id" foreign="user_id" cardinality="many" owner="local"/>
<aggregate alias="CreatedBy" class="modUser" local="createdby" foreign="id" cardinality="one" owner="foreign"/>
<aggregate alias="EditedBy" class="modUser" local="editedby" foreign="id" cardinality="one" owner="foreign"/>
</object>
<object class="Product" table="products" extends="xPDOSimpleObject">
<field key="id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" />
<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
<column key="id" collation="A" null="false" />
</index>
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" default=""/>
<field key="comments" dbtype="text" phptype="string" null="false" default=""/>
<field key="createdon" dbtype="datetime" phptype="datetime" null="true"/>
<field key="createdby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="editedon" dbtype="datetime" phptype="datetime" null="true"/>
<field key="editedby" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="deleted" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<field key="published" dbtype="tinyint" precision="1" attributes="unsigned" phptype="integer" null="false" default="0" />
<composite alias="ResellerProducts" class="ResellerProduct" local="id" foreign="product_id" cardinality="many" owner="local"/>
<aggregate alias="CreatedBy" class="modUser" local="createdby" foreign="id" cardinality="one" owner="foreign"/>
<aggregate alias="EditedBy" class="modUser" local="editedby" foreign="id" cardinality="one" owner="foreign"/>
</object>
<object class="ResellerProduct" table="reseller_product" extends="xPDOObject">
<field key="id" dbtype="int" precision="11" phptype="integer" null="false" index="pk" generated="native" />
<index alias="PRIMARY" name="PRIMARY" primary="true" unique="true">
<column key="id" collation="A" null="false" />
</index>
<field key="reseller_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<field key="product_id" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0"/>
<aggregate alias="Reseller" class="Reseller" local="reseller_id" foreign="id" cardinality="one" owner="foreign"/>
<aggregate alias="Product" class="Product" local="product_id" foreign="id" cardinality="one" owner="foreign"/>
</object>
</model>$reseller = $modx->getObject('Reseller', 1);
$res_products = $reseller->getMany('Products');