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.