There is a bug in the behavior that make it fetch only id and
displayfield (that is a virtual field and is documented in the
behavior. ).

In the line 45, change:

                                                array('id', 
$model->$class->displayField), null, -1);
to:

                                                null, null, -1);

Link to fixed version:

http://bin.cakephp.org/view/1702492171

This is the patch:

----------BEGIN-PATCH-------------------
--- polymorphic_original.php    2008-04-01 17:57:56.000000000 -0300
+++ polymorphic.php     2008-04-01 17:58:50.000000000 -0300
@@ -42,7 +42,7 @@
                                                )));
                                        }
                                        $associated = 
$model->$class->find(array($class . '.id' => $foreignId),
-                                               array('id', 
$model->$class->displayField), null, -1);
+                                               null, null, -1);
                                        $associated[$class]['display_field'] =
$associated[$class][$model->$class->displayField];
                                        $results[$key][$class] = 
$associated[$class];
                                }
-----------END-PATCH-------------------



On Tue, Apr 1, 2008 at 12:38 PM, rob5408 <[EMAIL PROTECTED]> wrote:
>
>  > 1. A litle background about what are you trying to do.
>
>  I have Person information that is common to all people (name,
>  nationality, birthdate). But People can be different things though,
>  like Coaches, Players, Officials etc. These Person Types can have
>  statistical information like player stats for players or win/loss
>  records for coaches. I didn't want to lump unnecessary information
>  onto Person that didn't need it , so I broke each of these types out
>  to sep. tables and models
>
>
>  > 2. The code you are using to define the models.
>
>  class Person extends AppModel {
>
>         var $name = 'Person';
>         var $actsAs = array('Polymorphic');
>
>         // The database table for this model includes 'class' and
>  'foreign_id' fields
>         // No associations to person types exist here
>  }
>
>  class CoachRating extends AppModel {
>
>         var $name = 'CoachRating';
>
>         var $hasMany = array(
>                 'Person' => array(
>                         'className' => 'Person',
>                         'foreignKey' => 'foreign_id',
>                         'conditions' => array('Person.class' => 
> 'CoachRating'),
>                         'dependent' => true
>                 )
>         );
>
> }
>
>  > 3. How are you calling the models.
>
>  When I go to view one Person in particular, I use
>
>  $this->set('person', $this->Person->read(null, $id));
>
>
>  > 4. The SQL that is beign generated.
>
>  SELECT `Person`.`id`, `Person`.`birthdate`, `Person`.`firstname`,
>  `Person`.`lastname`, `Person`.`country_id`, `Person`.`person_type_id`,
>  `Person`.`class`, `Person`.`foreign_id` FROM `persons` AS `Person`
>  WHERE `Person`.`id` = 4045 LIMIT 1
>  SELECT `CoachRating`.`id` FROM `coach_ratings` AS `CoachRating` WHERE
>  `CoachRating`.`id` = 8 LIMIT 1
>
>
>  > 5. The version of cake you are using.
>
>  1.2.0.6311 beta
>
>  Thanks! rob
>
>
>  On Apr 1, 11:24 am, "Dardo Sordi Bogado" <[EMAIL PROTECTED]> wrote:
>  > Missing information:
>  >
>  > 1. A litle background about what are you trying to do.
>  > 2. The code you are using to define the models.
>  > 3. How are you calling the models.
>  > 4. The SQL that is beign generated.
>  > 5. The version of cake you are using.
>  >
>
>
> > On Tue, Apr 1, 2008 at 12:11 PM, rob5408 <[EMAIL PROTECTED]> wrote:
>  >
>  > >  I followed the Bakery page on setting up my db and models for the
>  > >  Polymorphic Behavior and it looks like I'm almost there, but the rest
>  > >  of the db fields for my associated model aren't being included. I'm
>  > >  seeing a return like this...
>  >
>  > >  Array
>  > >  (
>  > >     [Person] => Array
>  > >         (
>  > >             [id] => 4045
>  > >             [birthdate] => 1978-04-11
>  > >             [firstname] => Donald
>  > >             [lastname] => Marks
>  > >             [class] => CoachRating
>  > >             [foreign_id] => 8
>  > >         )
>  >
>  > >     [CoachRating] => Array
>  > >         (
>  > >             [id] => 8
>  > >             [display_field] => 8
>  > >         )
>  >
>  > >  )
>  >
>  > >  but 'display_field' isn't a field in CoachRating table and there's two
>  > >  fields omitted. Maybe I'm trying to use this behavior when another
>  > >  would be more logical. Thanks, rob
>  >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to