关联模型未加载由cake php控制台生成的代码

时间:2012-07-13 19:30:01

标签: php cakephp cakephp-2.1

我使用cakephp控制台生成一些CRUD操作。由于默认情况下未在控制器中加载关联模型的模型,因此生成的代码存在错误。

例如:

$programs = $this->Chantier->Program->find('list');

无效,但是:

$this->loadModel('Program');
$programs = $this->Program->find('list');

会。 以下是关联的代码:

/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
    'Programs' => array(
        'className' => 'Programs',
        'foreignKey' => 'Programs_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Etats' => array(
        'className' => 'Etats',
        'foreignKey' => 'Etats_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Types' => array(
        'className' => 'Types',
        'foreignKey' => 'Types_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'ChampsLibres' => array(
        'className' => 'ChampsLibres',
        'foreignKey' => 'Champs_libres_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),


);

1 个答案:

答案 0 :(得分:1)

仔细查看您的代码:

public $belongsTo = array(
'Programs' => array(
    'className' => 'Programs',
    'foreignKey' => 'Programs_id',
    'conditions' => '',
    'fields' => '',
    'order' => ''
),

关联和类名的别名都是复数,而这是可能的,很好,它违反了CakePHP约定。你正在尝试这个:

$programs = $this->Chantier->Program->find('list');

但请注意,您以单数形式编写程序,而不是在您的关联中声明的复数形式。我建议重新烘焙你的代码以遵循惯例,以避免未来的麻烦和混乱。