Hello again,
I have a Dictionary table with composite key [font="Lucida Console"](tablename, code)[/font] where a legacy application keeps all table dictionaries.
On the new application there is a class which models customers which has a country associated; so, in [font="Lucida Console"]relations()[/font]:
'dictionaryCountry' => array( self::BELONGS_TO, 'Dictionary', 'country_id',
'condition' => '`dictionaryCountry`.`tablename` = \'' . DICTIONARY_TYPE_COUNTRY . '\'' ),
Notice that [font="Lucida Console"]tablename[/font] field is a constant ([font="Lucida Console"]DICTIONARY_TYPE_COUNTRY[/font]) and I only need to play with [font="Lucida Console"]Dictionary.code[/font] and [font="Lucida Console"]Customer.country_id[/font], right?
When I need to the access related table from a [font="Lucida Console"]Customer[/font] instance, performing [font="Lucida Console"]Customer->countryDictionary->text[/font] (in order to fetch the country description), it issues an incorrect comparation on the SQL command:
SELECT `dictionaryCountry`.`table` AS `t1_c0`,
`dictionaryCountry`.`code` AS `t1_c1`, `dictionaryCountry`.`text` AS
`t1_c2`, `dictionaryCountry`.`extra1` AS `t1_c3`,
`dictionaryCountry`.`extra2` AS `t1_c4` FROM `Dictionary`
`dictionaryCountry` WHERE (`dictionaryCountry`.`tablename` = 'country') AND
(`dictionaryCountry`.`tablename`=:ypl0)
Notice the condition is font="Lucida Console"[/font] when it should issue as: [font="Lucida Console"]dictionaryCountry
.code
=:ypl0[/font].
At Dictionary model, I have try to play with [font=“Lucida Console”]primaryKey()[/font] method, testing a few combinations: returning [font=“Lucida Console”]array( ‘tablename’, ‘code’ )[/font], only [font=“Lucida Console”]‘code’[/font] and deleting the method.
At the database, I test to replace the Dictionary table primary key from [font="Lucida Console"](tablename, code)[/font] to [font="Lucida Console"](code, tablename)[/font], without luck…
So, what I missing…?
Really appreciate any clue,
cbi