Hello!
I have five models: Offers, Category, CategoryI18n, Unit & UnitI18n
and they're associated as follows:
Offer--belongsTo-->Category
Offer--belongsTo-->Unit
Category--hasMany-->CategoryI18n
Unit--hasMany-->UnitI18n
and here is the code from models:
### file models/offer.php ###
class Offer extends AppModel{
var $name='Offer';
var $recursive=2;
var $belongsTo=array('Unit'=>array('className'=>'Unit',
'conditions'=>'',
'order'=>'',
'dependent'=>true,
'foreignKey'=>'unit_id',
'finderQuery'=>'',
'fields'=>array(),
'exclusive'=>false),
'Category'=>array('className'=>'Category',
'conditions'=>'',
'order'=>'',
'dependent'=>true,
'foreignKey'=>'category_id',
'finderQuery'=>'',
'fields'=>array(),
'exclusive'=>false));
}
########################
### file models/category.php ###
class Category extends AppModel{
var $name='Category';
var $recursive=2;
var $hasMany=array('CategoryI18n'=>array('className'=>'CategoryI18n',
'conditions'=>'',
'order'=>'CategoryI18n.locale DESC',
'dependent'=>true,
'foreignKey'=>'category_id',
'finderQuery'=>'',
'fields'=>array(),
'exclusive'=>false));
}
########################
### file models/unit.php ###
class Unit extends AppModel{
var $name='Unit';
var $recursive=2;
var $hasMany=array('UnitI18n'=>array('className'=>'UnitI18n',
'conditions'=>'',
'order'=>'UnitI18n.locale DESC',
'dependent'=>true,
'foreignKey'=>'unit_id',
'finderQuery'=>'',
'fields'=>array(),
'exclusive'=>false));
}
########################
So when I try to fetch some offers recursively, I get the CategoryI18n
results, but not UnitI18n.
As you can see from the code, both models (Category & Unit) are
related to Offer in same manner, and UnitI18n & CategoryI18n
respectively are related to Unit & Category.
$this->Offer->findAll(array(), array(), 'Offer.last_edit_date DESC',
1, 1, 2); returns this:
Array
(
[0] => Array
(
[Offer] => Array
(
[id] => 4
[category_id] => 2
[type_id] => 1
[status_id] => 2
[country_id] => 4
[region_id] =>
[settlement_id] =>
[district_id] =>
[qunatity] => 0
[unit_id] => 1
[currency_id] => 1
[price_per_unit] =>
[price_1] => 123
[price_2] => 234
[date] => 2008-04-18 13:51:48
[last_edit_date] => 2008-04-18 13:51:48
)
[Unit] => Array
(
[id] => 1
)
[Category] => Array
(
[id] => 2
[category_id] => 1
[CategoryI18n] => Array
(
[0] => Array
(
[id] => 4
[category_id] => 2
[locale] => bul
[content] => 1-стайни
)
[1] => Array
(
[id] => 3
[category_id] => 2
[locale] => eng
[content] => 1-room
)
)
)
)
So Categories are fetched recursively but Units NOT.
And finally my biggest confusion is the fact that actually Cake runs
SQL queries for fetching UnitI18n as CategoryI18n but the result is
missing in the array
Here is what controller produces as SQL statements:
SELECT `Unit`.`id` FROM `units` AS `Unit` WHERE `Unit`.`id` = 1
SELECT `UnitI18n`.`id`, `UnitI18n`.`unit_id`, `UnitI18n`.`locale`,
`UnitI18n`.`content` FROM `unit_i18ns` AS `UnitI18n` WHERE
`UnitI18n`.`unit_id` IN (1) ORDER BY `UnitI18n`.`locale` DESC
SELECT `Category`.`id`, `Category`.`category_id` FROM `categories` AS
`Category` WHERE `Category`.`id` = 2
SELECT `CategoryI18n`.`id`, `CategoryI18n`.`category_id`,
`CategoryI18n`.`locale`, `CategoryI18n`.`content` FROM
`category_i18ns` AS `CategoryI18n` WHERE `CategoryI18n`.`category_id`
IN (2) ORDER BY `CategoryI18n`.`locale` DESC
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---