Cakephp 使用外键关系构造select元素

Cakephp 使用外键关系构造select元素,cakephp,Cakephp,以下是我的简单数据库模式和模型: create table personas --done ( id int primary key AUTO_INCREMENT, nombre varchar(128), apellido varchar(128), fecha_de_nacimiento date, sexo Bool, carnet_de_identidad varchar(64), direccion_domicilio varch

以下是我的简单数据库模式和模型:

create table personas --done
(
    id int primary key AUTO_INCREMENT,
    nombre varchar(128),
    apellido varchar(128),
    fecha_de_nacimiento date,
    sexo Bool,
    carnet_de_identidad varchar(64),
    direccion_domicilio varchar(128),
    direccion_oficina varchar(128),
    ciudad varchar(128),
    estado varchar(128),
    pais varchar(128),
    email_principal varchar(512),
    email_secundario varchar(512),
    telefono varchar(64),
    movil varchar(64),
    titulo_profesional varchar(128),
    universidad varchar(128),
    foto_archivada blob,
    curriculum text,
    comentarios text
);

create table coordinadors
(
    id int primary key AUTO_INCREMENT,
    persona_id int,
    FOREIGN KEY (persona_id) REFERENCES personas(id)
);

# My CakePHP models:

class Persona extends AppModel {
    public $hasOne = array('Tutor'); // Some other relationship ommitted for brevity.
}

class Tutor extends AppModel {
    public $belongsTo = 'Persona';
}
我试图创建一个HTML元素,其中只包含作为协调器的persona对象。用简单的英语来说,这就是:给我展示一个所有角色选择的集合,这些角色选择都是协调人

以下是我目前掌握的情况:

$coordinadores = $this->Coordinador->find('all');

Output:
array(
(int) 0 => array(
    'Coordinador' => array(
        'id' => '3',
        'persona_id' => '2'
    ),
    'Persona' => array(
        'id' => '2',
        'nombre' => 'Sergioa',
        'apellido' => 'Tapia',
        'fecha_de_nacimiento' => '2012-10-01',
        'sexo' => false,
        'carnet_de_identidad' => '215154',
        'direccion_domicilio' => 'qwerqwerqwer3',
        'direccion_oficina' => 'qwerqwerwqerqwer',
        'ciudad' => 'Sqwerqwerwqerra',
        'estado' => 'Sqwerqwerqwerquz',
        'pais' => 'qwerqwerqwerqwer',
        'email_principal' => 'serqwerqwerqwerm',
        'email_secundario' => 'stqwerwqerqwercom',
        'telefono' => 'qwerqwerqwer',
        'movil' => 'qwerqwerqwer',
        'titulo_profesional' => 'Ing qwerqwerqwer',
        'universidad' => 'qwerqwerqwer',
        'foto_archivada' => null,
        'curriculum' => '<p>oiasdfoiwecwec</p>',
        'comentarios' => '<p>jojqwefijwecwc wecwec</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>wcwecwec</p>'
    )
    )
    )

如何使用Persona对象创建一个简单的元素?

您已经完成了艰苦的工作。现在,您只需输出结果:

echo '<select>';
foreach ($coordinadores as $coordinador) {
    echo '<option value="' . $coordinador['Persona']['id'] . '">';
    echo $coordinador['Persona']['apellido'] . ' ' . $coordinador['Persona']['nombre'];
    echo '</option>';
}
echo '</select>';

这是我想出的解决办法。那么你是说没有CakePHP“神奇”的方法来做到这一点?谢谢这不是你使用cakephp的方式。@dogmatic69:如果你能告诉我一个更好的方法,我洗耳恭听使用模型::在控制器中查找“列表”,在视图中使用FormHelper::选择。