Cripes! I've done this before! I specified a join:

$this->set(
  'unregistered_members',
  $this->Event->EventMember->Member->find(
    'all',
    array(
      'fields' => array(
        'Member.id',
        'Member.first_name',
        'Member.last_name'
      ),
      'order' => array('Member.last_name' => 'ASC'),
      'joins' => array(
        array(
          'table' => 'events_members',
          'alias' => 'EventMember',
          'type' => 'right',
          'conditions' => array(
            'EventMember.event_id' => $id,
            'Member.id != EventMember.member_id'
          )
        )
      )
    )
  )
);

On Fri, Sep 18, 2009 at 3:18 PM, brian <[email protected]> wrote:
> I really wish I could think of a better subject line.
>
> I want to find all Members who are NOT registered for a particular
> Event. I'm sure this should be dead simple but it's eluding me.
>
> I created a "join" model, so I can select directly on the HABTM table.
>
> class Event extends AppModel
> {
>        public $belongsTo = array('Country');
>        public $hasMany = array('EventMember');
>        public $hasAndBelongsTo = array('Member');
> }
>
> class Member extends AppModel
> {
>        public $hasAndBelongsTo = array('Event');
>        public $hasMany = array('EventMember');
> }
>
> class EventMember extends AppModel
> {
>        public $name = 'EventMember';
>        public $useTable = 'events_members';
>        public $belongsTo = array('Event', 'Member');
> }
>
> My failed attempts in EventsController:
>
> $this->set(
>  'unregistered_members',
>  $this->Event->EventMember->Member->find(
>    'all',
>    array(
>      'fields' => array(
>        'Member.id',
>        'Member.first_name',
>        'Member.last_name'
>      ),
>      'order' => array('Member.last_name' => 'ASC'),
>      'contain' => array(
>        'EventMember' => array(
>          'conditions' => array(
>            'EventMember.event_id' => $id,
>            'Member.id != EventMember.member_id'
>          )
>        )
>      )
>    )
>  )
> );
>
> $this->set(
>  'unregistered_members',
>  $this->Event->EventMember->Member->find(
>    'all',
>    array(
>      'conditions' => array('Member.id != EventMember.member_id'),
>      'fields' => array(
>        'Member.id',
>        'Member.first_name',
>        'Member.last_name'
>      ),
>      'order' => array('Member.last_name' => 'ASC'),
>      'contain' => array(
>        'EventMember' => array(
>          'conditions' => array(
>            'EventMember.event_id' => $id
>
>          )
>        )
>      )
>    )
>  )
> );
>
> Can anyone suggest something?
>

--~--~---------~--~----~------------~-------~--~----~
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]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to