Looking into the Model code, it looks like it is not there that you
should apply the changes.

The reading from the database of the main model (Parent) and the
related models (Node, Ghost and Child) all take place in the
DataSource, so you could probably write another DataSource and use
that.

Line 2079 (Model):
The Model establish a database connection using the DataSource defined
in your configuration.
Line 2083 (Model):
The Model asks the database connection to read using the query.
Line 790 (DboSource):
The datasource prepares to process/query for related/associated
models.
Line 805 (DboSource):
Fetches the data and processes/queries the related/associated models.

Based on the above, that should give you a starting point, in which to
maybe write your own datasource.

The only problem I see, may be that not only reading, but also writing
to the database has to be changed :)
Enjoy,
   John



You could probably write a Behaviour, but that will take additional
processing, which slows down the application.

On May 7, 2:48 pm, Roland Bock <[email protected]> wrote:
> John Andersen wrote:
> > I agree that the structure could be better, but as it is, is the way
> > we have to work with it, and I consider it sufficient for my usage.
> > Enjoy,
> >    John
>
> OK, two questions:
>
> a) Do you think I could tweak current Models with a Behavior in order to
> get the structure I prefer?
>
> b) Do you think it would make sense to send a patch that would change
> the data structure (maybe for cake-1.4)?
>
> Thanks and regards,
>
> Roland
>
>
>
>
>
> > On May 7, 12:30 pm, Roland Bock <[email protected]> wrote:
> >> Hi,
>
> >> John Andersen wrote:
> >>> I do think that if you don't like something in CakePHP, please write
> >>> your own solution to it, then offer it to the CakePHP developers.
> >> Sure. I'd like to understand first, though :-)
>
> >> In CakePHP, Parent -> Node -> Child leads to different ways to handle a
> >> single Node:
>
> >> $node['id'];    // in case Node has been retrieved by Parent
> >> $node[Child'];
>
> >> but
>
> >> $currentRecord['Node']['id']; // Node has been retrieved by Node
> >> $currentRecord['Child'];
>
> >> This seems to add complexity.
>
> >> Now, here is what I would aim for (including the Ghost you added)
>
> >> Array
> >> (
> >>     [Parent] => Array
> >>         (
> >>             [0] => Array
> >>                 (
> >>                     [id] => 1
> >>                     [Node] => Array
> >>                         (
> >>                             [0] => Array
> >>                                 (
> >>                                     [id] => 17
> >>                                     [Child] => Array
> >>                                         (
> >>                                         )
> >>                                 )
> >>                             [1] => Array
> >>                                 (
> >>                                     [id] => 19
> >>                                     [Child] => Array
> >>                                         (
> >>                                         )
> >>                                 )
> >>                         )
> >>                     [Ghost] => Array
> >>                         (
> >>                             [0] => Array
> >>                                 (
> >>                                     [id] => 2
> >>                                 )
> >>                             [1] => Array
> >>                                 (
> >>                                     [id] => 3
> >>                                 )
> >>                         )
> >>                 )
> >>         )
> >> )
>
> >> This way I can say
>
> >> $resultSet             <- This is an array of Parents
> >> $currentRecord = $resultSet['Parent']['0']
> >> $currentRecord         <- This is a Parent
> >> $currentRecord['id']
> >> $currentRecord['Node']
> >> $currentRecord['Node'][0]['id']
> >> $currentRecord['Node'][0]['Child']
> >> $currentRecord['Ghost]
>
> >> In the original CakePHP structure,
>
> >> $resultSet  <- This is an array of arrays(Parent,Nodes, Ghosts)
> >> $currentRecord = $resultSet['0']
> >> $currentRecord        <- This is a Parent/Nodes/Ghosts array
> >> $currentRecord['Parent']
> >> $currentRecord['Parent']['id']
> >> $currentRecord['Node']
> >> $currentRecord['Node'][0]['Child]
> >> $currentRecord['Ghost']
>
> >> So basically, my way, you need to write *less* to access members of
> >> 'Parent'. The rest is pretty similar. But, (huge benefit, I think), you
> >> can handle a Node always in the same way, regardless of whether you get
> >> it included in a Parent or use the Node Model directly:
>
> >> My way:
>
> >> $node['id'];  // no matter what
> >> $node['Child'];
>
> >> Remeber the CakePHP way:
>
> >> $node['id'];    // in case Node has been retrieved by Parent
> >> $node[Child'];
>
> >> but
>
> >> $currentRecord['Node']['id']; // Node has been retrieved by Node
> >> $currentRecord['Child'];
>
> >>> Does the above helps you to clarify why the original structure is
> >>> good?
> >> Not yet, I am afraid. Maybe I was able to intrigue you with my proposal? 
> >> :-)
>
> >> Regards,
>
> >> Roland
>
> > [snip]
>
> > Check out the new CakePHP Questions sitehttp://cakeqs.organd help others 
> > with their CakePHP related questions.
>
> > You received this message because you are subscribed to the Google Groups 
> > "CakePHP" 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 
> > athttp://groups.google.com/group/cake-php?hl=en
>
> Check out the new CakePHP Questions sitehttp://cakeqs.organd help others with 
> their CakePHP related questions.
>
> You received this message because you are subscribed to the Google Groups 
> "CakePHP" 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 
> athttp://groups.google.com/group/cake-php?hl=en

Check out the new CakePHP Questions site http://cakeqs.org and help others with 
their CakePHP related questions.

You received this message because you are subscribed to the Google Groups 
"CakePHP" 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

Reply via email to