Ha. I was JUST going to ask about that! On Tuesday, October 9, 2012 9:31:29 AM UTC-4, Greg wrote: > > solved it. > > RTFM basically :( > > > If you need to reference a model within your plugin, you need to include > the plugin name with the model name, separated with a dot. > > which seems to go for if you are referencing a model within the same > plugin...even though the associations don't bake like that. > > working now.. > > > On Tue, Oct 9, 2012 at 11:19 PM, Greg Skerman <[email protected]<javascript:> > > wrote: > >> oddly, if i pr($this->Operation->User) I get the structure for the User >> model, but if I dump out $this->Operation->OperationParticipant I get the >> structure for AppModel.. its almost as though OperationParticipant is not >> initializing? >> >> >> >> On Tue, Oct 9, 2012 at 10:44 PM, Greg Skerman <[email protected]<javascript:> >> > wrote: >> >>> Dave >>> >>> heres the exact OperationParticipant model: >>> >>> class OperationParticipant extends OperationAppModel { >>> /** >>> * Validation rules >>> >>> * >>> * @var array >>> */ >>> public $validate = array( >>> 'user_id' => array( >>> 'numeric' => array( >>> 'rule' => array('numeric'), >>> //'message' => 'Your custom message here', >>> //'allowEmpty' => false, >>> //'required' => false, >>> //'last' => false, // Stop validation after this rule >>> //'on' => 'create', // Limit validation to 'create' or >>> 'update' operations >>> ), >>> ), >>> 'operation_id' => array( >>> 'numeric' => array( >>> 'rule' => array('numeric'), >>> //'message' => 'Your custom message here', >>> //'allowEmpty' => false, >>> //'required' => false, >>> //'last' => false, // Stop validation after this rule >>> //'on' => 'create', // Limit validation to 'create' or >>> 'update' operations >>> ), >>> ), >>> ); >>> >>> //The Associations below have been created with all possible keys, >>> those that are not needed can be removed >>> >>> >>> /** >>> * belongsTo associations >>> * >>> * @var array >>> */ >>> public $belongsTo = array( >>> 'User' => array( >>> 'className' => 'User', >>> 'foreignKey' => 'user_id', >>> 'conditions' => '', >>> 'fields' => '', >>> 'order' => '' >>> ), >>> 'Operation' => array( >>> 'className' => 'Operation', >>> 'foreignKey' => 'operation_id', >>> 'conditions' => '', >>> 'fields' => '', >>> 'order' => '', >>> 'counterCache' => true >>> ) >>> ); >>> } >>> >>> and the Operation controller method doing the work: >>> >>> /** >>> * view method >>> * >>> * View an operation >>> * >>> * @param string $id >>> * @return void >>> */ >>> public function view($id = null) { >>> $this->Operation->id = $id; >>> if (!$this->Operation->exists()) { >>> throw new NotFoundException(__('Invalid operation')); >>> } >>> $this->Operation->Behaviors->attach('Containable'); >>> $this->set('operation', $this->Operation->find('first', >>> array( >>> >>> 'contain' => array( >>> 'User', >>> 'OperationType', >>> 'OperationParticipant' => array('User') >>> ), >>> 'conditions' => array( >>> 'Operation.id' => $id >>> ) >>> ) >>> )); >>> } >>> >>> >>> and still getting the error described...using cake 2.1.5 if that helps? >>> >>> >>> >>> On Tue, Oct 9, 2012 at 9:14 AM, Greg Skerman <[email protected]<javascript:> >>> > wrote: >>> >>>> The only thing I can think of is that User doesn't have an association >>>> (baking the app would make it do so). >>>> >>>> Because Operation is a plugin which may or may not be there, User >>>> doesn't have the association. But given i don't need to query it from the >>>> user side, I don't need the association there, do i? >>>> >>>> >>>> >>>> On Mon, Oct 8, 2012 at 10:52 PM, Dave M. <[email protected]<javascript:> >>>> > wrote: >>>> >>>>> I suspect there is something else going on specific to your setup. >>>>> >>>>> I baked up a quick test app and had no problems at all. I didn't alias >>>>> the association at all. >>>>> >>>>> My model names and associations were the same as yours. >>>>> >>>>> $this->Operation->find('all', array( >>>>> 'contain' => array( >>>>> 'User', >>>>> 'OperationType', >>>>> 'OperationParticipant' => array('User') >>>>> ) >>>>> ); >>>>> >>>>> Yielded this result: >>>>> >>>>> array( >>>>> (int) 0 => array( >>>>> 'Operation' => array( >>>>> 'id' => '1', >>>>> 'user_id' => '1', >>>>> 'descr' => 'fooo', >>>>> 'operation_type_id' => '1' >>>>> ), >>>>> 'User' => array( >>>>> 'id' => '1', >>>>> 'username' => 'aaa' >>>>> ), >>>>> 'OperationType' => array( >>>>> 'id' => '1', >>>>> 'descr' => 'Foo' >>>>> ), >>>>> 'OperationParticipant' => array( >>>>> (int) 0 => array( >>>>> 'id' => '1', >>>>> 'user_id' => '1', >>>>> 'operation_id' => '1', >>>>> 'User' => array( >>>>> 'id' => '1', >>>>> 'username' => 'aaa' >>>>> ) >>>>> ), >>>>> (int) 1 => array( >>>>> 'id' => '2', >>>>> 'user_id' => '2', >>>>> 'operation_id' => '1', >>>>> 'User' => array( >>>>> 'id' => '2', >>>>> 'username' => 'bbb' >>>>> ) >>>>> ) >>>>> ) >>>>> ) >>>>> ) >>>>> >>>>> I'm still thinking about this. >>>>> >>>>> On Monday, October 8, 2012 7:45:39 AM UTC-4, José Lorenzo wrote: >>>>>> >>>>>> You need the alias as cricket said and in your find you need >>>>>> 'contain' => array('OpUser', 'User') >>>>>> >>>>>> El lunes, 8 de octubre de 2012 01:50:05 UTC+2, Greg escribió: >>>>>>> >>>>>>> Sure have. Its containable that i'm suspecting is the problem.. Its >>>>>>> almost as though it binds the model on the first level of contain, but >>>>>>> then >>>>>>> fails to rebind it after. If i turn containable off I can query the >>>>>>> model >>>>>>> with ->find();, but with containable on ->find() throws a non-existant >>>>>>> method/non-existant object error. >>>>>>> >>>>>>> >>>>>>> On Mon, Oct 8, 2012 at 2:17 AM, Dave M. <[email protected]> wrote: >>>>>>> >>>>>>>> another wild guess: have you attached the Containable behavior? >>>>>>>> >>>>>>>> In your AppModel: >>>>>>>> public $actsAs = array('Containable'); >>>>>>>> >>>>>>>> -dave >>>>>>>> >>>>>>>> On Saturday, October 6, 2012 2:58:54 AM UTC-4, Greg wrote: >>>>>>>> >>>>>>>>> Sorry to keep bumping, but this is really doing my head in... >>>>>>>>> >>>>>>>>> The only "solution" i have is to load the data without the >>>>>>>>> contained users, and then call the users with ajax after the page has >>>>>>>>> loaded - which seems a bit daft to me. >>>>>>>>> >>>>>>>>> On Tue, Oct 2, 2012 at 10:37 PM, Greg Skerman >>>>>>>>> <[email protected]>wrote: >>>>>>>>> >>>>>>>>>> So even after aliasing everything, the User model appears to >>>>>>>>>> become unbound from the OperationParticipant model and doesn't get >>>>>>>>>> rebound >>>>>>>>>> by containable... >>>>>>>>>> >>>>>>>>>> anybody got any clue? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Tue, Oct 2, 2012 at 7:54 AM, Greg Skerman >>>>>>>>>> <[email protected]>wrote: >>>>>>>>>> >>>>>>>>>>> Yeah no dice :( had tried something similar to that before. >>>>>>>>>>> >>>>>>>>>>> * Model "OperationParticipant" is not associated with model >>>>>>>>>>> "OPUser"* >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Tue, Oct 2, 2012 at 4:05 AM, lowpass <[email protected]>wrote: >>>>>>>>>>> >>>>>>>>>>>> Just a wild guess: in the OperationParticipant model, try >>>>>>>>>>>> changing the >>>>>>>>>>>> alias for User. Something like: >>>>>>>>>>>> >>>>>>>>>>>> public $belongsTo = array( >>>>>>>>>>>> 'OPUser' => array( >>>>>>>>>>>> 'className' => 'User', >>>>>>>>>>>> ... >>>>>>>>>>>> >>>>>>>>>>>> And then change the contain block to have >>>>>>>>>>>> 'OperationParticipant' => >>>>>>>>>>>> array('OPUser') >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Oct 1, 2012 at 3:05 AM, Greg Skerman <[email protected]> >>>>>>>>>>>> wrote: >>>>>>>>>>>> > I've been wracking my brain over this for a few hours and its >>>>>>>>>>>> doing my head >>>>>>>>>>>> > in. >>>>>>>>>>>> > >>>>>>>>>>>> > Consider the following models and associations: >>>>>>>>>>>> > >>>>>>>>>>>> > Operation belongsTo User, OperationType and hasMany >>>>>>>>>>>> OperationParticipant >>>>>>>>>>>> > OperationType hasMany Operation >>>>>>>>>>>> > OperationParticipant belongsTo User, Operation >>>>>>>>>>>> > >>>>>>>>>>>> > if I dump out the contents of OperationParticipant in the >>>>>>>>>>>> > OperationParticipants controller, I get exactly what I would >>>>>>>>>>>> expect - a list >>>>>>>>>>>> > of OperationParticipants and the associated list of Users. >>>>>>>>>>>> Obviously User is >>>>>>>>>>>> > correctly associated with OperationParticipant >>>>>>>>>>>> > >>>>>>>>>>>> > The problem comes when I want to call up an Operation and >>>>>>>>>>>> list the users who >>>>>>>>>>>> > are participating. >>>>>>>>>>>> > >>>>>>>>>>>> > $this->Operation->find('all', array( >>>>>>>>>>>> > 'contain' => array( >>>>>>>>>>>> > 'OperationType', 'User', 'OperationParticipant' => >>>>>>>>>>>> array('User') >>>>>>>>>>>> > ) >>>>>>>>>>>> > ) >>>>>>>>>>>> > ); >>>>>>>>>>>> > >>>>>>>>>>>> > I get >>>>>>>>>>>> > >>>>>>>>>>>> > Model "OperationParticipant" is not associated with model >>>>>>>>>>>> "User" >>>>>>>>>>>> > >>>>>>>>>>>> > If, from within the context of the Operations controller I do >>>>>>>>>>>> > pr($this->Operation->**Operation**Participants->find('**all'))); >>>>>>>>>>>> I get no >>>>>>>>>>>> > associated data back for OperationParticipants. >>>>>>>>>>>> > >>>>>>>>>>>> > Adding OperationParticipants to the $uses property yields the >>>>>>>>>>>> same result, >>>>>>>>>>>> > no associated data. >>>>>>>>>>>> > >>>>>>>>>>>> > I've done deep contains before, and I cannot for the life of >>>>>>>>>>>> me understand >>>>>>>>>>>> > why this is acting up. >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > Here are the associations: >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > OperationParticipant.php >>>>>>>>>>>> > >>>>>>>>>>>> > /** >>>>>>>>>>>> > * belongsTo associations >>>>>>>>>>>> > * >>>>>>>>>>>> > * @var array >>>>>>>>>>>> > */ >>>>>>>>>>>> > public $belongsTo = array( >>>>>>>>>>>> > 'User' => array( >>>>>>>>>>>> > 'className' => 'User', >>>>>>>>>>>> > 'foreignKey' => 'user_id', >>>>>>>>>>>> > 'conditions' => '', >>>>>>>>>>>> > 'fields' => '', >>>>>>>>>>>> > 'order' => '' >>>>>>>>>>>> > ), >>>>>>>>>>>> > 'Operation' => array( >>>>>>>>>>>> > 'className' => 'Operation', >>>>>>>>>>>> > 'foreignKey' => 'operation_id', >>>>>>>>>>>> > 'conditions' => '', >>>>>>>>>>>> > 'fields' => '', >>>>>>>>>>>> > 'order' => '', >>>>>>>>>>>> > 'counterCache' => true >>>>>>>>>>>> > ) >>>>>>>>>>>> > ); >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > Operation.php >>>>>>>>>>>> > >>>>>>>>>>>> > /** >>>>>>>>>>>> > * belongsTo associations >>>>>>>>>>>> > * >>>>>>>>>>>> > * @var array >>>>>>>>>>>> > */ >>>>>>>>>>>> > public $belongsTo = array( >>>>>>>>>>>> > 'OperationType' => array( >>>>>>>>>>>> > 'className' => 'OperationType', >>>>>>>>>>>> > 'foreignKey' => 'operation_type_id', >>>>>>>>>>>> > 'conditions' => '', >>>>>>>>>>>> > 'fields' => '', >>>>>>>>>>>> > 'order' => '' >>>>>>>>>>>> > ), >>>>>>>>>>>> > 'User' => array( >>>>>>>>>>>> > 'className' => 'User', >>>>>>>>>>>> > 'foreignKey' => 'user_id', >>>>>>>>>>>> > 'conditions' => '', >>>>>>>>>>>> > 'fields' => '', >>>>>>>>>>>> > 'order' => '' >>>>>>>>>>>> > ) >>>>>>>>>>>> > ); >>>>>>>>>>>> > >>>>>>>>>>>> > /** >>>>>>>>>>>> > * hasMany associations >>>>>>>>>>>> > * >>>>>>>>>>>> > * @var array >>>>>>>>>>>> > */ >>>>>>>>>>>> > public $hasMany = array( >>>>>>>>>>>> > 'OperationParticipant' => array( >>>>>>>>>>>> > 'className' => 'OperationParticipant', >>>>>>>>>>>> > 'foreignKey' => 'operation_id', >>>>>>>>>>>> > 'dependent' => false, >>>>>>>>>>>> > 'conditions' => '', >>>>>>>>>>>> > 'fields' => '', >>>>>>>>>>>> > 'order' => '', >>>>>>>>>>>> > 'limit' => '', >>>>>>>>>>>> > 'offset' => '', >>>>>>>>>>>> > 'exclusive' => '', >>>>>>>>>>>> > 'finderQuery' => '', >>>>>>>>>>>> > 'counterQuery' => '' >>>>>>>>>>>> > ) >>>>>>>>>>>> > ); >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > OperationType.php >>>>>>>>>>>> > >>>>>>>>>>>> > /** >>>>>>>>>>>> > * hasMany associations >>>>>>>>>>>> > * >>>>>>>>>>>> > * @var array >>>>>>>>>>>> > */ >>>>>>>>>>>> > public $hasMany = array( >>>>>>>>>>>> > 'Operation' => array( >>>>>>>>>>>> > 'className' => 'Operation', >>>>>>>>>>>> > 'foreignKey' => 'operation_type_id', >>>>>>>>>>>> > 'dependent' => false, >>>>>>>>>>>> > 'conditions' => '', >>>>>>>>>>>> > 'fields' => '', >>>>>>>>>>>> > 'order' => '', >>>>>>>>>>>> > 'limit' => '', >>>>>>>>>>>> > 'offset' => '', >>>>>>>>>>>> > 'exclusive' => '', >>>>>>>>>>>> > 'finderQuery' => '', >>>>>>>>>>>> > 'counterQuery' => '' >>>>>>>>>>>> > ) >>>>>>>>>>>> > ); >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > The users model does not have the association included, >>>>>>>>>>>> Operations is a >>>>>>>>>>>> > plugin which may not always be there so I've not included the >>>>>>>>>>>> hasMany (and >>>>>>>>>>>> > there is no reason to read the data back the other way, i.e. >>>>>>>>>>>> I have no >>>>>>>>>>>> > requirement to get a list of Users and find their associated >>>>>>>>>>>> Operations - >>>>>>>>>>>> > only Operations, and find their associated users. >>>>>>>>>>>> > >>>>>>>>>>>> > Can anyone shed any light? >>>>>>>>>>>> > >>>>>>>>>>>> > -- >>>>>>>>>>>> > Like Us on FacekBook >>>>>>>>>>>> > https://www.facebook.com/**CakeP**HP<https://www.facebook.com/CakePHP> >>>>>>>>>>>> > Find us on Twitter http://twitter.com/CakePHP >>>>>>>>>>>> > >>>>>>>>>>>> > --- >>>>>>>>>>>> > 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 >>>>>>>>>>>> > cake-php+u...@**googlegroups.com**. >>>>>>>>>>>> >>>>>>>>>>>> > Visit this group at http://groups.google.com/**group** >>>>>>>>>>>> /cake-php?hl=en <http://groups.google.com/group/cake-php?hl=en> >>>>>>>>>>>> . >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> Like Us on FacekBook >>>>>>>>>>>> https://www.facebook.com/**CakeP**HP<https://www.facebook.com/CakePHP> >>>>>>>>>>>> Find us on Twitter http://twitter.com/CakePHP >>>>>>>>>>>> >>>>>>>>>>>> --- >>>>>>>>>>>> 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 cake-php+u...@** >>>>>>>>>>>> googlegroups.com**. >>>>>>>>>>>> >>>>>>>>>>>> Visit this group at http://groups.google.com/**group** >>>>>>>>>>>> /cake-php?hl=en <http://groups.google.com/group/cake-php?hl=en> >>>>>>>>>>>> . >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> -- >>>>>>>> Like Us on FaceBook >>>>>>>> https://www.facebook.com/**CakePHP<https://www.facebook.com/CakePHP> >>>>>>>> >>>>>>>> Find us on Twitter http://twitter.com/CakePHP >>>>>>>> >>>>>>>> --- >>>>>>>> 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]**. >>>>>>>> Visit this group at >>>>>>>> http://groups.google.com/**group/cake-php?hl=en<http://groups.google.com/group/cake-php?hl=en> >>>>>>>> . >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> -- >>>>> Like Us on FaceBook https://www.facebook.com/CakePHP >>>>> Find us on Twitter http://twitter.com/CakePHP >>>>> >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "CakePHP" group. >>>>> To post to this group, send email to [email protected]<javascript:> >>>>> . >>>>> To unsubscribe from this group, send email to >>>>> [email protected] <javascript:>. >>>>> Visit this group at http://groups.google.com/group/cake-php?hl=en. >>>>> >>>>> >>>>> >>>> >>>> >>> >> >
-- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- 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]. Visit this group at http://groups.google.com/group/cake-php?hl=en.
