Używam MODx Revolution i xPDO. Mam problem ze stworzeniem odpowiedniego zapytania przy pomocy xPDO
schemat tabel mojego komponentu:
<?xml version="1.0" encoding="UTF-8"?> <model package="Klima" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM"> <object class="klimaFirma" table="klima_firmy" extends="xPDOSimpleObject"> <composite alias="FirmaRegion" class="klimaFirmaRegion" local="id" foreign="firma" cardinality="many" owner="local" /> <field key="nazwa" dbtype="varchar" precision="250" phptype="string" null="false" default="" index="index" /> <field key="dzialalnosc" dbtype="text" phptype="string" null="false" default="" /> <field key="dzialalnosc_en" dbtype="text" phptype="string" null="false" default="" /> <field key="www" dbtype="varchar" precision="250" phptype="string" null="false" default="" /> <field key="email" dbtype="varchar" precision="250" phptype="string" null="false" default="" /> <field key="tel" dbtype="varchar" precision="30" phptype="string" null="false" default="" /> <field key="fax" dbtype="varchar" precision="30" phptype="string" null="false" default="" /> <field key="adres" dbtype="varchar" precision="100" phptype="string" null="false" default="" /> <field key="miasto" dbtype="varchar" precision="30" phptype="string" null="false" default="" /> <field key="kod" dbtype="varchar" precision="10" phptype="string" null="false" default="" /> <field key="wpis" dbtype="enum" precision="'2','1','0'" phptype="string" null="false" default="0" /> <field key="logo" dbtype="varchar" precision="250" phptype="string" null="false" default="" /> <field key="logo_a" dbtype="enum" precision="'0','1'" phptype="string" null="false" default="0" /> <field key="rozsz" dbtype="varchar" precision="100" phptype="string" null="false" default="" /> <field key="o_kont" dbtype="varchar" precision="200" phptype="string" null="false" default="" /> <field key="t_kont" dbtype="varchar" precision="50" phptype="string" null="false" default="" /> <field key="em_kont" dbtype="varchar" precision="50" phptype="string" null="false" default="" /> <field key="nazwa2" dbtype="varchar" precision="250" phptype="string" null="false" default="" index="index" /> <field key="adres2" dbtype="varchar" precision="100" phptype="string" null="false" default="" /> <field key="kod2" dbtype="varchar" precision="10" phptype="string" null="false" default="" /> <field key="miasto2" dbtype="varchar" precision="30" phptype="string" null="false" default="" /> <field key="nip" dbtype="varchar" precision="30" phptype="string" null="false" default="" /> <field key="kolejnosc" dbtype="int" precision="11" phptype="integer" attributes="unsigned" null="false" default="0" /> <field key="aktywacja" dbtype="enum" precision="'0','1'" phptype="string" null="false" default="0" /> <field key="data" dbtype="date" precision="11" phptype="integer" attributes="unsigned" null="false" default="" /> <field key="koniec" dbtype="date" precision="11" phptype="string" attributes="unsigned" null="false" default="" /> <field key="polecamy" dbtype="enum" precision="'0','1'" phptype="string" null="false" default="0"/> </object> <object class="klimaRegion" table="klima_regiony" extends="xPDOSimpleObject"> <composite alias="FirmaRegion" class="klimaFirmaRegion" local="id" foreign="region" cardinality="many" owner="local" /> <field key="pid" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" /> <field key="region" dbtype="varchar" precision="100" phptype="string" null="false" default="" index="index" /> </object> <object class="klimaFirmaRegion" table="klima_firma_region" extends="xPDOSimpleObject"> <aggregate alias="Firma" class="klimaFirma" local="firma" foreign="id" cardinality="one" owner="foreign" /> <aggregate alias="Region" class="klimaRegion" local="region" foreign="id" cardinality="one" owner="foreign" /> <field key="firma" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" /> <field key="region" dbtype="int" precision="10" attributes="unsigned" phptype="integer" null="false" default="0" index="index" /> </object> </model>
Z kolei zapytanie SQL, które chciałem wykonać to:
SELECT GROUP_CONCAT(modx_klima_regiony.region ORDER BY modx_klima_regiony.region ASC ) regiony, modx_klima_firmy.* FROM modx_klima_firmy LEFT JOIN modx_klima_firma_region ON (modx_klima_firmy.id = modx_klima_firma_region.firma) LEFT JOIN modx_klima_regiony ON (modx_klima_regiony.id = modx_klima_firma_region.region) GROUP BY modx_klima_firmy.id ORDER BY modx_klima_firmy.nazwa ASC
Próbowałem w ten sposób ale nie dało żadnych rezultatów:
$c = $modx->newQuery('klimaFirma'); $c->select(' GROUP_CONCAT ( Region.region ORDER BY Region.region ASC ) AS regiony, klimaFirma.* '); $c->leftJoin('klimaFirmaRegion','FirmaRegion'); $c->leftJoin('klimaRegion','Region','Region.id = FirmaRegion.region'); 'klimaFirma.nazwa:LIKE' => '%ma%', )); $c->sortby('klimaFirma.id','ASC'); $c->groupby('klimaFirma.id'); $firmy = $modx->getCollection('klimaFirma', $c); foreach ($firmy as $firma) { }
--
Pozdrawiam
MM