THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#26 Re: trier par...

(15-09-2015 12:53:02)


j'ai fait ça

$locale = $this->request->getSession()->getLang()->getLocale();

$search =TestQuery::create();

$search
  ->rightJoinTestAddress('tableaddress')
  ->withColumn('`tableaddress`.COUNTRY_ID', 'COUNTRY_ID')
  ->addJoin(
       '`tableaddress`.COUNTRY_ID',
       CountryI18nTableMap::ID,
       Criteria::RIGHT_JOIN
  )
 ->add(CountryI18nTableMap::LOCALE,$locale)
;

je n'arrive pas à rajouter pour la traduction

une piste ?

Offline

#27 Re: trier par...

(15-09-2015 13:50:52)


Tu ne fais pas de jointure avec la table country_i18n.

Dans un premier temps, écris la requête SQL que tu souhaites obtenir, et ensuite traduis là en appels Propel.


OpenStudio Toulouse

Offline

#28 Re: trier par...

(15-09-2015 15:12:43)


j'essaie de faire cette requete

SELECT * FROM `test` AS A LEFT JOIN `test_address` AS B ON (A.address_id = B.id) LEFT JOIN `country` AS C ON (B.country_id = C.id) LEFT JOIN `country_i18n` AS D ON (C.id = D.id AND D.locale = 'fr_FR') ORDER BY D.title

je n'ai pas trouvé comment faire des alias sur les jointures

ce code s'y approche ?

$locale = $this->request->getSession()->getLang()->getLocale();

$search =TestQuery::create();

$search
    ->leftJoinTestAddress('tableaddress')
    ->withColumn('`tableaddress`.ID', 'ADDRESS_ID')
    ->addJoin(
        '`tableaddress`.COUNTRY_ID',
        CountryTableMap::ID,
        Criteria::LEFT_JOIN
    )
    ->addJoin(
        array(
            CountryTableMap::ID,
            CountryI18nTableMap::LOCALE
        ),
        array(
            CountryI18nTableMap::ID,
            "'".$locale."'"
        ),
        Criteria::LEFT_JOIN
    )
    ->addAscendingOrderByColumn(CountryI18nTableMap::TITLE)
;

ce qui génère

SELECT test.ID, test.VISIBLE, test.POSITION, test.TITLE, test.ADDRESS_ID, `tableaddress`.ID AS ADDRESS_ID FROM `test` LEFT JOIN `test_address` `tableaddress` ON (test.ADDRESS_ID=tableaddress.ID) LEFT JOIN `country` ON (`tableaddress`.COUNTRY_ID=country.ID) LEFT JOIN `country_i18n` ON (country.ID=country_i18n.ID AND country_i18n.LOCALE='fr_FR') ORDER BY country_i18n.TITLE ASC LIMIT 2147483647

Last edited by Debutant (15-09-2015 15:51:25)

Offline

#29 Re: trier par...

(15-09-2015 17:40:37)


Tu n'a pas besoin de la table country.


OpenStudio Toulouse

Offline

#30 Re: trier par...

(16-09-2015 08:14:44)


Merci Roadster31

J'ai modifié la requête en supprimant la table country
Merci wink