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