How can I use $this->EventItem inside the Item model ?
It gives the error

Notice: Undefined property: Item::$EventItem in /Users/pvhee/Sites/
webdev/satellite/satellite-activation/app/models/item.php on line 66

Does it work similar to using the $uses array in the controller?

Bye,
Peter


On Mar 5, 3:52 pm, "Peter Vanhee" <[EMAIL PROTECTED]> wrote:
> Thank you for your response!
>
> The afterFind seems a good solution to me, I will let you know as soon
> as I tested it.
> By the way, isn't this a problem more users will have to deal with?
> Imagine a base
> model like Item and some models that extend this model like EventItem
> and NewsItem
> which have extra fields. Then querying for all models you will also
> want to have the
> extra fields for EventItem and NewsItem included. Your trick will do
> the job!
>
> Thanks!Peter
>
> On Mar 3, 5:40 pm, "Grant Cox" <[EMAIL PROTECTED]> wrote:
>
> > One way would be to have all the possible item types (ie NewsItem,
> > EventItem) associated, with different conditions.  Only those that
> > match should be loaded (but you will probably get all the keys, and
> > it'll be a complicated and possibly slow JOIN generated).
>
> > class Item extends AppModel
> > {
> >         var $name = 'Item';
> >         var $belongsTo = array(
> >                 'EventItem' => array('className'  => 'EventItem', 
> > 'foreignKey' =>
> > 'type_id', 'conditions' => 'Item.type = 0'),
> >                 'NewsItem' => array('className'  => 'NewsItem', 
> > 'foreignKey' =>
> > 'type_id', 'conditions' => 'Item.type = 1'),
> >         );
>
> > }
>
> > other than that you can have something in the afterFind of your Item
> > model to make a query and load the correct items data.  Something
> > like:
>
> > class Item extends AppModel
> > {
> >         var $name = 'Item';
>
> >         function afterFind( $results )
> >         {
> >                 for ($i = 0; $i < sizeof($results); $i++) {
> >                         // check if this is a model, or if it is an array 
> > of models
> >                         if ( isset($results[$i][$this->name]) ){
> >                                 // this is the model we want, see if it's a 
> > single or array
> >                                 if ( isset($results[$i][$this->name][0]) ){
> >                                         // run on every model
> >                                         for ($j = 0; $j < 
> > sizeof($results[$i][$this->name]); $j++) {
> >                                                 $this->_attachAttributes( 
> > &$results[$i][$this->name][$j] );
> >                                         }
> >                                 } else {
> >                                         $this->_attachAttributes( 
> > &$results[$i][$this->name] );
> >                                 }
> >                         }
> >                 }
>
> >                 return $results;
> >         }
>
> >         function _attachAttributes( &$data_row )
> >         {
> >                 if ( !empty($data_row['id']) ){
>
> >                         switch( $data_row['id'] ){
> >                                 case 0:
> >                                         $event_item = 
> > $this->EventItem->find('EventItem.id'=>
> > $data_row['type_id']);
> >                                         $data_row['EventItem'] = 
> > $event_item['EventItem'];
> >                                         break;
> >                                 case 0:
> >                                         $event_item = 
> > $this->NewsItem->find('NewsItem.id'=>
> > $data_row['type_id']);
> >                                         $data_row['NewsItem'] = 
> > $event_item['NewsItem'];
> >                                         break;
> >                         }
>
> >                 }
> >         }
>
> > }


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