Hola.

Tengo una aplicación en la que manejo profesores que pasan por una
serie de colegios en los que están un determinado intervalo de tiempo.
He creado los modelos profesor y colegio de forma que un profesor
HABTM colegios.

No obstante, como la relación entre profesor y colegio lleva asociado
más datos: fecha de entrada y fecha de salida, he definido un tercer
modelo para la relación: PertenenciaColegio

Las tablas son:

profesores (id, nombre, email, password)
pertenencia_colegios (id, profesor_id, colegio_id, fecha_entrada,
fecha_salida)
colegios (id, nombre)

Bien. Lo que quiero hacer es sacar un listado paginado de los
profesores que pertencen en la actualidad a un determinado colegio. La
condición para "pertenecer en la actualidad" es que el campo
fecha_salida sea NULL.

Mi problema es que la tabla pertenencia_colegios no se incluye dentro
de la consulta y cuando pongo las condiciones sobre los campos de la
tabla pertenencia_colegios la consulta falla porque no sabe donde
buscar dichos campos.

¿Cómo puedo hacer esto?

El código sería algo así:

Fichero: controllers/profesores_controller.php
function index($colegio_id) {
  $this->Profesor->recursive = 0;
  $conditions = array('PertenenciaColegio.colegio_id' => $colegio_id,
'PertenenciaColegio.fecha_salida' => null);
  $this->set('personas', $this->paginate(null, $conditions));
}

El problema que aparece es:

SQL Error: 1054: Unknown column 'PertenenciaColegio.colegio_id' in
'where clause' y se produce porque, aunque en las condiciones sí que
aparece la cadena "PertenenciaColegio.colegio_id = 8 AND
PertenenciaColegio.fecha_salida IS NULL", en las tablas de la consulta
no figura pertenencia_colegios

Fichero: models/profesor.php
class Profesor extends AppModel {
  var $name = 'Profesor';
  var $hasMany = array(
    'PertenenciaColegio' => array(
      'className' => 'PertenenciaColegio',
      'foreignKey' => 'persona_id'
    )
  );
}

Fichero: models/pertenencia_colegio.php
class PertenenciaColegio extends AppModel {
  var $name = 'PertenenciaColegio';
  var $belongsTo = array(
    'Colegio' => array(
       'className' => 'Colegio',
       'foreignKey' => 'colegio_id'
    ),
    'Profesor' => array(
      'className' => 'Profesor',
      'foreignKey' => 'profesor_id'
    )
  );

Fichero: models/colegio.php
class Colegio extends AppModel {
  var $name = 'Colegio';
  var $hasMany = array(
    'PertenenciaColegio' => array(
      'className' => 'PertenenciaColegio',
      'foreignKey' => 'colegio_id'
    )
);

Muchas gracias.

Saludos

-- 
Has recibido este mensaje porque estás suscrito al grupo "CakePHP-es" de Grupos 
de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a 
[email protected].
Para anular tu suscripción a este grupo, envía un correo electrónico a 
[email protected]
Para tener acceso a más opciones, visita el grupo en 
http://groups.google.com/group/cakephp-es?hl=es.

Responder a