I compiled a list of the variations I have encountered in different
associations. I have not checked how behaviors are called.


When primary is set this is the structure I get just as in the
Cookbook:
array(
    '0' => array(
        'Model' => array(
            'id' => 1
        )
    )
)

When primary is not set I get a subset of these for each association:

hasOne
array(
    'id' => 1
)

habtm
array(
    '0' => array(
        'id' => 1
    )
)

hasOne, hasMany, belongsTo
array(
    '0' => array(
        'Model' => array(
            'id' => 1
        )
    )
)

habtm, hasMany
array(
    '0' => array(
        'Model' => array(
            '0' => array(
                'id' => 1
            )
        )
    )
)


This makes the number of ifs and fors quite many in order the catch
them all. And since more than one is sometimes called for the same
record in the same request, you also have to check is you have already
manipulated your data. At least if you do something "destructive" to
it like encryption/decryption or serialization.

My orignal question still stands. What is the best way to write an
afterFind in order to: 1. not miss converting data in some queries 2.
not double-convert the data ?

regards,
/Martin


On Oct 22, 5:16 pm, "[EMAIL PROTECTED]"
<[EMAIL PROTECTED]> wrote:
> Hi,
> I thought I'd ask this here. (see why below)
> How do I write afterFind() to modify a field.
>
> For example just something simple like this (just an example):
>
> function afterFind($data) {
>     foreach ($data as $key => $val) {
>         if ( isset($val[$this->alias]['name']) ) {
>             $data[$key][$this->alias]['name2'] = $val[$this->alias]
> ['name'];
>         }
>     }
>     debug($data);
>     return $data;
>
> }
>
> What I want to know is how to pick out the field from the passed data
> array. There are so many different ways the data is formatted that I
> end up with a quite messy series of for's and if's and I still don't
> fell 100% sure I got them all. I feel there must be some sure-fire way
> to write these.
>
> The Cookbook is not complete compared to what I 
> get.http://book.cakephp.org/view/681/afterFind
>
> The API does not mention much about this.
>
> I did not find any test in the core that helped me.
>
> I did not find anything on Google that dealt with anything but basic
> "primary" data.
>
> I noticed that sometimes afterFind() is called more than once with
> different data-structure each time. I asked about that 
> here:http://groups.google.com/group/cake-php/browse_thread/thread/c83e5f40...
>
> I'd love some clarification of this callback. Thans in advance.
> /Martin
--~--~---------~--~----~------------~-------~--~----~
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