#5943: Error getting Translation data using translation behaviour.
---------------------------------------+------------------------------------
    Reporter:  da...@dbloop.com        |          Type:  Bug      
      Status:  new                     |      Priority:  High     
   Milestone:  1.2.x.x                 |     Component:  Behaviors
     Version:  1.2 Final               |      Severity:  Major    
    Keywords:  Translation, Behaviors  |   Php_version:  PHP 5    
Cake_version:  1.2.0.7962              |  
---------------------------------------+------------------------------------
 I'm using translation behaviour to mantain data for an entity called Post.

 Post has 3 main fields name, title, body. Name has no translations, while
 title and body are translated fields. So I write in the Model code:


 {{{
 var $actsAs = array('Translate'=>array('title','body'));
 }}}

 When I save data in on language (lets say spanish "spa") everything works
 fine. When I read data from this same Post in "en_us" I don't get any
 data.


 {{{
 $this->Post->locale = "en_us";
 $this->data = $this->Post->read(null, $id);
 }}}

 where $id is the Post.id for the record previously saved in spanish.

 When I activate degug I see that the query to get data is:

 {{{
 SELECT `Post`.*, `Owg`.*, `Menuitem`.*, `I18n__title`.`content`,
 `I18n__body`.`content` FROM `posts` AS `Post` LEFT JOIN `i18n` AS
 `I18n__title` ON (`Post`.`id` = `I18n__title`.`foreign_key` AND
 `I18n__title`.`model` = 'Post' AND `I18n__title`.`field` = 'title') LEFT
 JOIN `i18n` AS `I18n__body` ON (`Post`.`id` = `I18n__body`.`foreign_key`
 AND `I18n__body`.`model` = 'Post' AND `I18n__body`.`field` = 'body') LEFT
 JOIN `owgs` AS `Owg` ON (`Post`.`owg_id` = `Owg`.`id`) LEFT JOIN
 `menuitems` AS `Menuitem` ON (`Post`.`menuitem_id` = `Menuitem`.`id`)
 WHERE `Post`.`id` = 1 AND `I18n__title`.`locale` = 'en_us' AND
 `I18n__body`.`locale` = 'en_us' LIMIT 1
 }}}

 this query doesn't return any record. But it must return almost the
 Post.id field, and in my case also Post.name.

 if I change the query for this:

 {{{
 SELECT `Post` . * , `Owg` . * , `Menuitem` . * , `I18n__title`.`content` ,
 `I18n__body`.`content`
 FROM `posts` AS `Post`
 LEFT JOIN `i18n` AS `I18n__title` ON ( `Post`.`id` =
 `I18n__title`.`foreign_key`
 AND `I18n__title`.`model` = 'Post'
 AND `I18n__title`.`field` = 'title'
 AND `I18n__title`.`locale` = 'en_us' )
 LEFT JOIN `i18n` AS `I18n__body` ON ( `Post`.`id` =
 `I18n__body`.`foreign_key`
 AND `I18n__body`.`model` = 'Post'
 AND `I18n__body`.`field` = 'body'
 AND `I18n__body`.`locale` = 'en_us' )
 LEFT JOIN `owgs` AS `Owg` ON ( `Post`.`owg_id` = `Owg`.`id` )
 LEFT JOIN `menuitems` AS `Menuitem` ON ( `Post`.`menuitem_id` =
 `Menuitem`.`id` )
 WHERE `Post`.`id` =1
 }}}

 moving the filter for I18n_title.locale = 'en_us' and I18n_body.locale =
 'en_us" inside the left join conditions.

 I get the expected data, so maybe the query construction is not correct.

-- 
Ticket URL: <https://trac.cakephp.org/ticket/5943>
CakePHP : The Rapid Development Framework for PHP <https://trac.cakephp.org/>
Cake is a rapid development framework for PHP which uses commonly known design 
patterns like ActiveRecord, Association Data Mapping, Front Controller and MVC. 
Our primary goal is to provide a structured framework that enables PHP users at 
all levels to rapidly develop robust web applications, without any loss to 
flexibility.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"tickets cakephp" group.
To post to this group, send email to tickets-cakephp@googlegroups.com
To unsubscribe from this group, send email to 
tickets-cakephp+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/tickets-cakephp?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to