Consulta secuencial con un parametro

La pregunta es de que manera puedo establecer una relacion que mediante un parametro usualmente account_id pueda obtener el listado de clientes, si tengo las siguientes tablas …


accounts (ActiveRecord)

  • account_id

  • name


accounts_has_users

  • account_id (Relacion hacia accounts.account_id)

  • user_id (Relacion hacia users.user_id)


users (ActiveRecord)

  • user_id

  • username

  • lastname


clients (ActiveRecord)

  • client_id

  • user_id (Relacion hacia users.user_id)


Y actualmente tengo una relacion establecida en el ActiveRecord de la tabla clients




public function relations()

{

  return array(

    'User'=>array(self::HAS_MANY, 'UsersActiveRecord', 'user_id')

  );

}



Al final deberia de conseguir una consulta similar a la siguiente:




SELECT * 

FROM clients 

INNER JOIN users ON clients.user_id = users.user_id 

INNER JOIN accounts_has_users ON users.user_id = accounts_has_users.user_id 

INNER JOIN accounts ON accounts_has_users.account_id = accounts.account_id 

WHERE accounts.account_id = 1 



Por favor, lee esto:

Relational Active Record

Te va a ayudar mucho!!!

Leyendo las instrucciones pude determinar el tipo de relacion y como crearlas…

ClientsActiveRecord




public function relations()

{

  return array(

    'User'=>array(self::BELONGS_TO, 'UsersActiveRecord', 'user_id'),

  );

}



UsersActiveRecord




public function relations()

{

  return array(

   'Client'=>array(self::HAS_ONE, 'ClientsActiveRecord', 'user_id'),

   'Account'=>array(self::MANY_MANY, 'AccountsActiveRecord', 'account_has_users(account_id, user_id)'),

  );

}



Para acceder a las propiedades hice




$model->User->user_id

$model->User->user_name

$model->User->user_lastname

$model->User->Client->client_id


//El acceso a este campo ya no funciono

//$model->User->Account->account_id



Todo fue bien hasta que trate de acceder al account_id, esa relación no la pude establecer… alguna idea…

No se si es una solución, un error o un apaño extraño pero te cuento.

Al establecer relaciones con el mismo nombre que los modelos (Account y Account), yo he experimentado algún fallo en mi aplicación y no podía acceder a las mismas mediante


$model->relacion->relacion

Prueba a cambiár el nombre de la relación (Account por acount_rel por ejemplo), a mi me funciono.