I think this is a mute point - it works really well as it is.
If a model has a self join relationship with itself you give it a different
model alias, so it will appear with that name in the data array, not the name
of the model. For example, an employees table might have a self join to denote
a management structure. So the field employees.manager_id would join back onto
employees.id. Your model would be something like this:
Employee...
var $belongsTo => array(
'Manager' => array(
'className' => 'Employee',
'foreignKey' => 'manager_id'
)
);
If you did a find containing the employee and his/her manager, you'd have a
whole leaf of data under the Manager key.
This makes much more sense than grouping the data elements by the type of join.
It also means that you can change the join type in your model and all of your
finds and so on will still work.
Jeremy Burns
Class Outfit
[email protected]
http://www.classoutfit.com
On 19 Oct 2010, at 14:59, Joshua Muheim wrote:
> Maybe I don't really understand your point, but as far as I see that's
> exactly what I've written here:
>
> Then I saw that every related model has its own key there, so it makes
> a bit sense. But why is the key in the array the model's name?
> Wouldn't it be better to have the name of the association in there?
> Because what when I have multiple associations to the same model? Or a
> HABTM with myself?
>
> On Tue, Oct 19, 2010 at 3:56 PM, euromark <[email protected]> wrote:
>> i think you are missing the obvious point
>> is there a reason why this is done this way in cake? yes, there is
>> trust the guys that work with since several years
>>
>> one example:
>> you have a BelongsTo relationshop
>> cake can easily get this data as well
>>
>> now you can do:
>>
>> $this->Model->recursive = 0;
>> $m = $this->Model->findById(1);
>> echo $res['Model']['something];
>> echo $res['OtherModel']['something];
>>
>> without any additional stuff going on.
>> thats why you always have the model name first.
>>
>>
>> On 19 Okt., 14:30, Joshua Muheim <[email protected]> wrote:
>>> It looks really clumsy to me. What about the following?
>>>
>>> class AppModel extends Model {
>>> function data($field) {
>>> return $this->data[$this->name][$field];
>>> }
>>>
>>> }
>>>
>>> First I was not sure why in the $data array there is a key
>>> 'ModelName', I would have expected something like this:
>>>
>>> array(
>>> 'id' => 1,
>>> 'name' => 'bla'
>>> )
>>>
>>> instead of
>>>
>>> array(
>>> 'ModelName' => array(
>>> 'id' => 1,
>>> 'name' => 'bla'
>>> )
>>> )
>>>
>>> Then I saw that every related model has its own key there, so it makes
>>> a bit sense. But why is the key in the array the model's name?
>>> Wouldn't it be better to have the name of the association in there?
>>> Because what when I have multiple associations to the same model? Or a
>>> HABTM with myself?
>>>
>>> Aside of this, I guess retrieving the "immediate" data of the model
>>> (not of it's related models') should have a special status and should
>>> be able to be retrieved in a faster way, like the one above...
>>>
>>> On Tue, Oct 19, 2010 at 1:15 PM, euromark <[email protected]>
>>> wrote:
>>>> nope
>>>> but thats already a very neat way to do it
>>>> what is your problem with it?
>>>
>>>> On 19 Okt., 11:53, psybear83 <[email protected]> wrote:
>>>>> Hi everybody
>>>
>>>>> Sorry for this newbish question, but I don't seem to find much about
>>>>> this (although I should, I guess).
>>>
>>>>> $m = $this->Model->find(1);
>>>>> echo $m->data['Model']['something];
>>>
>>>>> Is there a better way of getting a model's data fields instead of
>>>>> this? I always thought this could be done with $m->field(), but this
>>>>> retrieves the data from the database, what is not what I want.
>>>
>>>>> Thanks
>>>>> Josh
>>>
>>>> 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
>>
>
> 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
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