Cakephp hasManyThrough寻找错误的关联表

时间:2014-07-22 22:12:33

标签: cakephp model relationship

我与

有一个hasManyThrough关系
class Permission extends AppModel {
    public $hasMany = array(
        'PermissionRole'
    );
}

class Role extends AppModel {
    public $hasMany = array(
        'PermissionRole'
    );
}

class PermissionRole extends AppModel {
    public $belongsTo = array(
        'Permission', 'Role'
    );
}

尝试在Permission控制器上执行简单的view操作时,我收到此错误:

“错误:在数据源默认情况下找不到模型PermissionRole的表permission_roles”

根据CakePHP约定,permissions_roles是正确的表名,这是我创建的。为什么我看到此消息,如何更正此问题?

1 个答案:

答案 0 :(得分:1)

您遇到的是正确/预期的行为。

您引用的约定仅适用于实际HABTM关联中使用的连接表。在这种情况下,permissions_roles将是正确的,这反映了它连接的两个模型/表。

但是,在使用ORM(Model::$hasAndBelongsToMany)提供的HABTM功能的意义上,您没有使用实际的HABTM关联,但是您手动创建多对多关联,使用一对多许多和多对一关联,因此默认表名约定适用,其中使用了复数模型名称,即permission_roles

解决方案是简单地重命名你的表。