Un tip muy sencillo y funcional para los que quieren rellenar un desplegable con dos tablas relacionadas en CakePHP 1.2. En pocas palabras el entorno es el siguiente, dos tablas Users y Groups relacionadas entre si por el campo Users.group_id (sigo la nomenclatura 'oficial' para que tanto cake como bake me entiendan. Podríamos resumir la relación en:
Users 1:N Groups
Users belongsTo Groups
Groups hasMany Users
Hablando en código -dicho de otra forma- sería este el aspecto de ambos modelos:
class User extends AppModel {
var $name = 'User';
var $belongsTo = array(
'Group' => array('className' => 'Group',
'foreignKey' => 'group_id'),
);
}
class Group extends AppModel {
var $name = 'Group';
var $belongsTo = array(
'Group' => array('className' => 'Group',
'foreignKey' => 'group_id'),
);
}
A la hora de generar las vistas que, por defecto, bake escribe por nosotros me encuentro con un pequeño defecto. Cuando voy a agregar un nuevo usuario, en vez de salir un desplegable con el nombre de los grupos (Groups[id, group, created, modified]), salen los id, para muestra un pantallazo:
Gracias a cakephp-es, -mbavio y AldeaCMS en concreto- he conseguido corregir ese pequeño inconveniente, para ello generamos en controlador una variable ($groupList en este caso) que guarde un array de tuplas id->group para luego rellenar el combo: