thanks for your help On Wed, Oct 10, 2012 at 2:58 AM, Dave M. <[email protected]> wrote:
> 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]> 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/**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 >>>>>>>>> [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<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 > 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.
