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]> 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]> 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]> 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]> 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]. >>>> To unsubscribe from this group, send email to >>>> [email protected]. >>>> 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.
