Monday, October 1, 2012

Re: struggling with containable - containing the same model twice

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 <zijn.digital@gmail.com> 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 <gskerman@gmail.com> 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->OperationParticipants->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/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 cake-php@googlegroups.com.
> To unsubscribe from this group, send email to
> cake-php+unsubscribe@googlegroups.com.
> Visit this group at http://groups.google.com/group/cake-php?hl=en.
>
>

--
Like Us on FacekBook 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 cake-php@googlegroups.com.
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.



--
Like Us on FacekBook 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 cake-php@googlegroups.com.
To unsubscribe from this group, send email to cake-php+unsubscribe@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php?hl=en.
 
 

No comments: