$ belongsTo relationship not not working cakephp 2.7.5

时间:2015-11-17 17:53:08

标签: php mysql cakephp

我正在尝试将两个模型链接到我的cakephp 2.7.5 app。

问题是,当我尝试添加一个新的“用户”时,表单没有显示“选择”,其中包含我创建的“Departamentos”选项。

代码是:

应用\模型\ user.php的

<?php

class User extends AppModel {
    public $name = "User";
    public $belongsTo = array('Departamento' => array('className' => 'Departamento', 'foreignKey' => 'departamento_id'));
...

应用\模型\ Departamento.php

<?php

class Departamento extends AppModel {

    public $displayField = 'nombre';
    public $name = "Departamento";
    public $hasMany = array('User' => array('className' => 'User', 'foreignKey' => 'departamento_id'));

}

这是MySQL脚本:

create table users(
    id int primary key auto_increment,
    nombre varchar(200),
    username varchar(20) not null,
    password varchar(100) not null,
    rol varchar(50) not null,
    departamento_id int
);

create table departamentos(
     id int primary key auto_increment,
    nombre varchar(200) not null
);

我的 app \ View \ Users \ add.ctp 代码:

echo $this->Form->create('User');
echo $this->Form->input('nombre', array('label' => 'Nombre Completo:'));
echo $this->Form->input('username', array('label' => 'Nombre de usuario:'));
echo $this->Form->input('password', array('type' => 'password', 'label' => 'Contraseña:'));
echo $this->Form->input('rol', array('label' => 'Rol del usuario:', 'type' => 'select', 'options' => array('ADMINISTRADOR' => 'Administrador', 'USUARIO' => 'Usuario')));
echo $this->Form->input('departamento_id', array('label' => 'Departamento:'));
echo $this->Form->end('Guardar');

我已将变形规则添加到我的西班牙语命名表中:

Inflector::rules('plural', array('irregular' => array('departamento' => 'departamentos')));

这是我的“添加用户”表单的屏幕截图,字段“Departamento”显示为空,但我的“Departamentos”表中有数据:

Add Form with empty field

由于

1 个答案:

答案 0 :(得分:1)

只需添加以下内容:

$this->set('departamentos',$this->User->Departamento->find('list',array('order'=>'nombre')));

UsersController::add()函数中。 CakePHP应该从视图中的$ departamentos变量自动创建SELECT选项。