cakephp外键下拉不在脚手架中工作

时间:2012-07-01 21:54:36

标签: php sql cakephp

我的架构很简单 - 每个用户都有一个ID和名称。 有属于用户的作业。实际架构 -

CREATE TABLE `users` (
   id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,  
  `name` varchar(20) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


CREATE TABLE `jobs` (
   id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  `user_id` INT UNSIGNED ,
  `type` int,  
  FOREIGN KEY (user_id) references  users(id) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我的JobsController看起来像这样 -

<?php
class JobsController extends AppController {
    public $scaffold;
    public $name = 'Job';

    public $belongsTo = array(
        'User' => array(
            'className'    => 'User',
            'foreignKey'   => 'user_id'
        )
    );

}

和UsersController为 -

<?php
class UsersController extends AppController {
    public $scaffold;
    public $name = 'User';


    public $hasMany = array(
        'Job' => array(
            'className'     => 'Job',
            'foreignKey'    => 'user_id'
        )
    );
}

问题:

当我访问http://hostname/Jobs/add时,我可以看到用户的下拉列表,但它是空的。 我创建的用户很少,我可以从http://hostname/Users/

看到

为什么下拉空?我可以添加作业,但是当我查看它们时,用户字段显示为空。

1 个答案:

答案 0 :(得分:4)

关联属于模型,而不属于控制器。

app / Model / User.php

class User extends AppModel {
    public $name = 'User';
    public $hasMany = array('Job');
}

app / Model / Job.php

class Job extends AppModel {
    public $name = 'Job';
    public $belongsTo = array('User');
}