Estoy trabajando en el primer proyecto cakephp y estoy un poco atrancado
este es el event model
Código:
y este es eventcontrollerclass Event extends AppModel { //relacion con user un evento es creado por un usuario public $belongsTo = array( 'User' => array('className' => 'User', 'foreingKey' => 'user_id' ) ); //relacion n:m con usuarios asisten a muchos eventos public $hasAndBelongsToMany = array( 'User' => array( 'className' => 'User', 'joinTable' => 'events_users', //lineamuyimportante!! 'foreingKey' => 'event_id', 'associationForeingKey' => 'user_id', 'finderQuery' => 'SELECT users_users.user_id2 FROM users_users join events on users_users.user_id = events.user_id where events.user_id = {$__cakeID__$}' ) ); public $hasMany = array( 'File' => array('className' => 'File', 'foreingKey' => 'event_id', 'dependent' => true ) );
Código:
Explico un poco el tema.class EventsController extends AppController { public $helpers = array('Paginator'); public $components = array( 'DebugKit.Toolbar', 'Session', 'Auth' => array( 'loginRedirect' => array('controller' => 'users', 'action' => 'index'), 'logoutRedirect' => array('controller' => 'users', 'action' => 'login'), 'authError' => 'You must be logged in to view this page.', 'loginError' => 'Invalid Username or Password entered, please try again.', 'authenticate' => array( 'Form' => array( 'fields' => array( 'username' => 'email', //Default is 'username' in the userModel 'password' => 'password' //Default is 'password' in the userModel ) ) ) )); public function beforeFilter() { parent::beforeFilter(); $this->Auth->allow('login','add'); } public function listarTodos() { $options = array('conditions'=>array('user_id'=>$this->Auth->user('id'))); $this->set('eventos', $this->Event->find('all', $options)); } public function listarProximos() { $options = array('conditions'=>array('user_id'=>$this->Auth->user('id'),'fecha >=' => date('Y-m-d') )); $this->set('eventos', $this->Event->find('all', $options)); } public function add(){ if($this->request->is('post')): $this->request->data['Event']['user_id'] = $this->Auth->user('id'); $this->Event->create(); if($this->Event->save($this->request->data)): $this->Session->setFlash('Event guardado'); $this->redirect(array('controller' => 'users','action' => 'index')); endif; endif; $users = $this->Event->User->find('list', array('conditions' => array('id' => $this->Auth->user('id') ))); $this->set(compact('users')); }
Tengo una bd en la cual hay users, events. entre users y event hay dos relaciones (1:N) creador del evento y una relacion (n:m) entre los asistentes al evento.
tambien hay una relacion n:m entre uses y users para formar los contactos de los usuarios.
lo que necesito es al crear un evento un user X me aparezcan para invitar a los contactos de ese usuario.
hasta el momento solo me salen todos los usuarios :(
saludos y muchas gracias