After experimenting for a while, I discovered that Cake actually calls my
afterFind function twice for each matching row, but with different data
formats -
The first time in the form - array(array('Group' => ('id' => ...)))
The second time in the form - array('id' => ... , 'Town' => array('id' =>
...)) so I do get the Town data. It is rather unfortunate that the data
formats are different as it makes the afterFind code rather ugly.
Mark
On Monday, November 19, 2012 5:37:59 PM UTC-5, Mark Wratten wrote:
>
> We are using Cake 2.2.2 and we have the following tables -
>
> Article -> id, group_id, town_id, ...
> Group -> id, town_id, ...
> Town -> id, ...
>
> The Article and Group tables need to modify their data with data from the
> Town table, so in each of those Models we have an afterFind callback that
> checks for the presence of Town data in the results and if found does the
> updates.
>
> This works fine for the primary model. However Group is also an associated
> model to the Article table, so if I execute the following find function -
>
> $this->Article->find('all', array('contain' => array('Town', 'Group',
> 'Group.Town')));
>
> Cake does run the query and assembles the data correctly, but the Group
> afterFind callback is called without the associated Town data, even though
> it is part of the query. As far as I can tell, the Group->afterFind is
> called before the queries for its associated tables are run.
>
> I'm looking for an elegant way to do this within the model, rather than
> resorting to putting the code in the controller.
>
> Thanks in advance
>
> Mark
>
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
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+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.