Tuesday, October 27, 2009

Re: Strange belongsTo problem

You can try changing the alias name of the relationship.

For example:

==========================================
//In DisplayArea Model
var $belongsTo = array(
'PageRelationship' => array( //Instead of just 'Page'
'className' => 'Page,
'foreignKey' => 'page_id'
);
==========================================

sersilva

2009/10/27 kdubya <kenwinans@winanstech.com>:
>
> I have a simple hierarchy like this:
>
> Page hasMany DisplayArea
> DisplayArea hasMany ContentBlock
> ContentBlock hasOne Image
>
> All is fine when I execute queries with the above associations e.g.
> $this->Page->find('first', array('conditions'=>array('title
> like'=>'%Home%')));
>
> Now I want to access some Page data when dealing with a single Image.
> So I added (in the appropriate models):
>
> Image belongsTo ContentBlock
> ContentBlock belongsTo DisplayArea
> DisplayArea belongsTo Page
>
> Now, when I do the exact same find() I get really strange debug
> output. I see the normal DESCRIBE queries and 2 other normal
> preliminary queries (generated elsewhere in my app) followed by the
> query generated by my find(). Only part way through this debug output
> the queries stop and the whole sequence starts over. See output:
> (default) 10 queries took 24 ms Nr      Query   Error   Affected        Num. rows       Took
> (ms)
> 1       DESCRIBE `pages`                7       7       4
> 2       DESCRIBE `display_areas`                7       7       4
> 3       DESCRIBE `content_blocks`               5       5       4
> 4       DESCRIBE `images`               12      12      4
> 5       DESCRIBE `configs`              3       3       3
> 6       SELECT `Page`.`id`, `Page`.`parent_id`, `Page`.`title`,
> `Page`.`link_name`, `Page`.`script`, `Page`.`layout`,
> `Page`.`description_meta` FROM `pages` AS `Page` WHERE `parent_id` = 1
>                3       3       1
> 7       SELECT `Config`.`id`, `Config`.`name`, `Config`.`value` FROM
> `configs` AS `Config` WHERE 1 = 1               12      12      1
> 8       SELECT `Page`.`id`, `Page`.`parent_id`, `Page`.`title`,
> `Page`.`link_name`, `Page`.`script`, `Page`.`layout`,
> `Page`.`description_meta` FROM `pages` AS `Page` WHERE `title` like
> '%Home%' LIMIT 1                1       1       1
> 9       SELECT `DisplayArea`.`id`, `DisplayArea`.`page_id`,
> `DisplayArea`.`name`, `DisplayArea`.`img_width`,
> `DisplayArea`.`img_height`, `DisplayArea`.`thm_width`,
> `DisplayArea`.`thm_height` FROM `display_areas` AS `DisplayArea` WHERE
> `DisplayArea`.`page_id` = (1)           2       2       1
> 10      SELECT `Page`.`id`, `Page`.`parent_id`, `Page`.`title`,
> `Page`.`link_name`, `Page`.`script`, `Page`.`layout`,
> `Page`.`description_meta` FROM `pages` AS `Page` WHERE `Page`.`id` = 1
>                1       1       1
> (default) 10 queries took 24 ms Nr      Query   Error   Affected        Num. rows       Took
> (ms)
> 1       DESCRIBE `pages`                7       7       4
> 2       DESCRIBE `display_areas`                7       7       4
> 3       DESCRIBE `content_blocks`               5       5       4
> 4       DESCRIBE `images`               12      12      4
> 5       DESCRIBE `configs`              3       3       3
> 6       SELECT `Page`.`id`, `Page`.`parent_id`, `Page`.`title`,
> `Page`.`link_name`, `Page`.`script`, `Page`.`layout`,
> `Page`.`description_meta` FROM `pages` AS `Page` WHERE `parent_id` = 1
>                3       3       1
> 7       SELECT `Config`.`id`, `Config`.`name`, `Config`.`value` FROM
> `configs` AS `Config` WHERE 1 = 1               12      12      1
> 8       SELECT `Page`.`id`, `Page`.`parent_id`, `Page`.`title`,
> `Page`.`link_name`, `Page`.`script`, `Page`.`layout`,
> `Page`.`description_meta` FROM `pages` AS `Page` WHERE `title` like
> '%Home%' LIMIT 1                1       1       1
> 9       SELECT `DisplayArea`.`id`, `DisplayArea`.`page_id`,
> `DisplayArea`.`name`, `DisplayArea`.`img_width`,
> `DisplayArea`.`img_height`, `DisplayArea`.`thm_width`,
> `DisplayArea`.`thm_height` FROM `display_areas` AS `DisplayArea` WHERE
> `DisplayArea`.`page_id` = (1)           2       2       1
> 10      SELECT `Page`.`id`, `Page`.`parent_id`, `Page`.`title`,
> `Page`.`link_name`, `Page`.`script`, `Page`.`layout`,
> `Page`.`description_meta` FROM `pages` AS `Page` WHERE `Page`.`id` = 1
>                1       1       1
> (default) 10 queries took 24 ms
> Notice (8): Trying to get property of non-object
>
> This repeats 4 more time then ends with a Fatal error:
> ConnectionManager::getDataSource - Non-existent data source
>
> It looks to me like there is some kind of infinite loop.
>
> If I delete
> DisplayArea belongsTo Page
>
> the find() works OK!
>
> Any Help?
>
> Thanks in advance,
> Ken
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To post to this group, send email to cake-php@googlegroups.com
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com
For more options, visit this group at http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

No comments: