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.


Reply via email to