I really like that approach so here's essentially what I did:
photos
- id
- owner_model (varchar(20))
- owner_id
<?php
class Photo extends AppModel
{
var $name = 'Photo';
var $belongsTo = array(
'Person' => array(
'foreignKey' => 'owner_id',
'conditions' => array('Photo.owner_model' => 'Person')),
'Group' => array(
'foreignKey' => 'owner_id',
'conditions' => array('Photo.owner_model' => 'Group'))
);
}
?>
<?php
class Person extends AppModel
{
var $name = 'Person';
var $hasMany = array(
'Photo' => array(
'foreignKey' => 'owner_id',
'conditions' => array('Photo.owner_model' => 'Person')
);
);
}
?>
The belongsTo on Photo works great. The hasMany on Person works in
the simple test I tried with just those 3 models, but in my larger
more complex app it didn't work - still trying to find out why. It
keeps sticking the Photo.owner_model='Person' condition on every SQL
query, even ones not involving Photo...
On 5/4/07, Mariano Iglesias <[EMAIL PROTECTED]> wrote:
>
> You could also add a model and id field, and set the belongsTo conditions in
> Photo specifying foreignKey and conditions.
>
> So you add two fields to table photos:
>
> model
> record_id
>
> And then on Photo model:
>
> <?php
>
> class Photo extends AppModel
> {
> var $name = 'Photo';
> var $belongsTo = array(
> 'Person' => array(
> 'foreignKey' => 'record_id',
> 'conditions' => 'Photo.model = \'Person\''
> ),
> 'Group' => array(
> 'foreignKey' => 'record_id',
> 'conditions' => 'Photo.model = \'Group\''
> )
> );
> }
>
> ?>
>
> http://manual.cakephp.org/chapter/models
>
> -MI
>
> ---------------------------------------------------------------------------
>
> Remember, smart coders answer ten questions for every question they ask.
> So be smart, be cool, and share your knowledge.
>
> BAKE ON!
>
> blog: http://www.MarianoIglesias.com.ar
>
>
> -----Mensaje original-----
> De: [email protected] [mailto:[EMAIL PROTECTED] En nombre
> de Zach Cox
> Enviado el: Viernes, 04 de Mayo de 2007 03:32 p.m.
> Para: [email protected]
> Asunto: Re: Polymorphic Associations
>
> Imagine a social networking site with people, groups, & photos:
> - Person hasMany Photo
> - Group hasMany Photo
> - Photo belongsTo Person, Group
>
> Then you'd need to do:
>
> photos
> - id
> - person_id
> - group_id
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" 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
-~----------~----~----~----~------~----~------~--~---