User has many Attendance Usermembership Bills Albums Rankforusers and more...
School has many Users need to return User, Attendance, Usermembership where User is based on school_id and Attendance is based on date. Robert On Wed, May 29, 2013 at 11:35 AM, John <[email protected]> wrote: > What are your model associations? > > Have you tried to break it down to one step at a time (no contained model > then add one at a time) and have a look at the produced SQL? > > I usually blindly add a 'recursive' = -1 clause in all find options when I > use containable to keep things simple (unless it is needed otherwise of > course). > > If you can't get it to work with contain you can always use plain old SQL > to get the proper results, no need to accept whatever cake is pulling out > for you with its magic. > > > > On Wednesday, May 29, 2013 5:43:21 PM UTC+3, Robert Gravel wrote: > >> Hi John, This was the exact code i tried in my second example. putting >> the condition for the current model seems to break the containable method >> and then all related models are returned. also the date search within the >> Attendance model also breaks. >> >> There must be a way here I am not seeing. >> >> I would hate to return all users and have to loop thru potentially >> thousands to rebuild the array. >> >> Any other options? >> >> Robert >> >> >> On Wed, May 29, 2013 at 6:25 AM, John <[email protected]> wrote: >> >>> The message is telling you what is wrong, you are asking containable to >>> contain the starting Model again >>> >>> $users = $this->User->find('all', >>> array( >>> 'conditions' => $cond2 >>> ), >>> * array(* >>> 'contain' => array( >>> 'Attendance' => array( >>> 'conditions' => $cond >>> ), >>> 'Usermembership' >>> ) >>> * )* >>> ); >>> >>> I think there's the problem, make your code like this: >>> >>> $users = $this->User->find('all', >>> array( >>> 'conditions' => $cond2, >>> >>> 'contain' => array( >>> 'Attendance' => array( >>> 'conditions' => $cond >>> ), >>> 'Usermembership' >>> ) >>> * )* >>> ); >>> >>> I always indent arrays inside finds to the extremes, especially if >>> something is wrong because it helps to understand hierarchy and nesting >>> better. You can always compact it to a single line if you think it's better >>> later >>> >>> >>> On Wednesday, May 29, 2013 6:10:47 AM UTC+3, Robert Gravel wrote: >>>> >>>> Hi experts, >>>> >>>> I am having an issue with containable. I have no problems returning the >>>> proper records for Attendance condition but the database call will still >>>> return all users in database with empty attendance field. >>>> I need to return only User.school_id that match admin's >>>> $session_school_id >>>> >>>> tried this >>>> $this->User->Behaviors->**attach**('Containable'); >>>> $from = $this->data['User']['start_**dat**e']['year'] . "-" . >>>> $this->data['User']['start_**dat**e']['month'] . "-" . >>>> $this->data['User']['start_**dat**e']['day']; >>>> $to = $this->data['User']['end_date'****]['year'] . "-" . >>>> $this->data['User']['end_date'****]['month'] . "-" . >>>> $this->data['User']['end_date'****]['day']; >>>> $cond = array('Attendance.created BETWEEN ? AND ?' => array($from, >>>> $to), 'Attendance.school_id' => $session_school_id); >>>> // return only school user >>>> $cond2 = array('User.school_id' => $session_school_id); >>>> $users = $this->User->find('all', array('contain' => array('Attendance' >>>> => array('conditions' => $cond), 'Usermembership', 'User' => >>>> array('conditions' => $cond2) ))); >>>> >>>> this gives me Warning (512): Model "User" is not associated with model >>>> "User" >>>> >>>> and tried this >>>> >>>> $users = $this->User->find('all', array('conditions' => $cond2), >>>> array('contain' => array('Attendance' => array('conditions' => $cond), >>>> 'Usermembership' ))); >>>> >>>> does not work either. >>>> >>>> cake 1.3 >>>> Thank you >>>> Robert >>>> >>> -- >>> 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 unsubscribe from this group and stop receiving emails from it, send >>> an email to cake-php+u...@**googlegroups.com. >>> To post to 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> >>> . >>> For more options, visit >>> https://groups.google.com/**groups/opt_out<https://groups.google.com/groups/opt_out> >>> . >>> >>> >>> >> >> -- > 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 unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/cake-php?hl=en. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- 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 unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/cake-php?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
