Thursday, November 6, 2008

Re: Undesired Recursion in Models

Well you kinda hijacked Renesistemic's thread... but anyway...

1. I'm pretty sure it takes both and means the same thing.
2. Town would need to actsAs Containable... however I add it to my
AppModel so all of my models have the ability.
3. I would have thought so... but there is an easy way to test!

Cheers,
Adam

On Nov 6, 7:09 pm, "Liebermann, Anja Carolin"
<anja.lieberm...@alltours.de> wrote:
> Thank you for the hint!
>
> Containable seems to offer amazing possibilities.  I read the cookbook article on it (http://manual.cakephp.org/view/474/Containable) and 3 Questions arose:
>
> 1st:
> I wonder about the syntax to get more than one associated model back.
>
> Lets say I call $this->Hotel->find
>
> Hotel belongs to a town and a country and has many images.
>
> In my call I would be interested in the information on town and country and want to ignore the images.
> I sths possible and what would be the correct syntax?
> $this->Hotel->contain('Town','Country');
> Or
> $this->Hotel->contain(array('Town','Country'));
>
> Looking athttp://api.cakephp.org/1.2/class_containable_behavior.html#41f468f246...
> The first option seems to be better.
>
> 2nd:
> Let's say I am in my hotels_controller.php and from there I want to call information on my Town
> E.g.
> $this->Hotel->Town->findByFoo($foo);
> Now I would like to limit the associated models for town. Can this be done from the hotel_cotroller? If yes, how?
> E.g.
> $this->Hotel->Town->contain('Quarters');
> Where would I have to place the
>
> var $actsAs = array('Containable');
>
> In the hotels_controller.php or in the town_controller.php or both?
>
> 3rd.
> Does contain work only with find or also with findBy?
>
> Thank you for all enlightening comments!
>
> Anja
>
> -----Ursprüngliche Nachricht-----
> Von: cake-php@googlegroups.com [mailto:cake-php@googlegroups.com] Im Auftrag von Adam Royle
> Gesendet: Donnerstag, 6. November 2008 07:46
> An: CakePHP
> Betreff: Re: Undesired Recursion in Models
>
> Well the recursion is just symbolic. Cake will only create one instance for each of your models and uses references to that one model throughout your app. You can test this out in your controller.
>
> var $uses = array('Site', 'Post');
>
> function test(){
>         if ($this->Site->Post === $this->Post) {
>                 echo 'adam is right!';
>         } else {
>                 echo 'ok adam lied!';
>         }
>         exit;
>
> }
>
> So really the only issue is that you're requesting more data from your models than you actually want. This is where the Containable behavior comes in. It will automatically prune your recursive associations based on what data you want.
>
> But you can read up on that elsewhere. Hope this helps and best of luck with your project!
>
> Cheers,
> Adam
>
> On Nov 6, 2:10 pm, Renesistemic <i.am.phil.russ...@gmail.com> wrote:
>
> > Hi. I've scoured the web to my best extent without wasting away days
> > of time on this, and I'm stuck... I'm running a CakePHP site with RC3,
> > and am having some serious memory overhead issues. As I came into this
> > project picking up the pieces of another programmer, I've recently
> > decided it'd be best to restructure the architecture of the model
> > relationships, as that seemed to be the major problem.
>
> > I have what could be best understood as three models. We'll call them
> > Site, Post, and Datavalues. The problem comes into play when I look at
> > the variable $this in the app_controller function. When I dump that
> > variable using the debug() method, I'm presented with about 3000 lines
> > of data, among which some of the code references indices of an array
> > inside a Model storing a sub-array of a Parent model, this of course
> > being prefixed by a line indicating * RECURSIVE.
>
> > I have a separate CakePHP site running with different models, and on
> > that site everything checks out with my model architecture. I realize
> > that I've left this problem contextually generalized, but there's no
> > sense in writing a novel if no one has any thoughts or interest in
> > this issue. Additionally, I thought that this problem might be known
> > well enough already that, upon reading this article, someone might be
> > able to offer a suggestion.
>
> > As such, is anyone familiar with issues involving recursive model
> > architecture in CakePHP? Thanks for any feedback you may have to
> > offer.
>
> > The Site model is set up with the assignment:
> > var $hasMany = array(
> >                         'Post' =>
> >                                 array('className' => 'Post',
> >                                                 'foreignKey' =>
> > 'site_id',
> >                                 )
> >         );
>
> > The Post model is set up with the assignment:
> > var $hasMany = array(
> >       'Datavalue' =>
> >         array('className' => 'Datavalue',
> >               'foreignKey' => 'post_id',
> >              )
> >       );
>
> > And lastly, the Datavalue model is set up as follows:
> > var $belongsTo = array(
> >                   'Post' =>
> >         array('className' => 'Post',
> >                                                   'foreignKey' =>
> > 'post_id',
> >                                 )
> >         );
--~--~---------~--~----~------------~-------~--~----~
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: