我与
有一个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
是正确的表名,这是我创建的。为什么我看到此消息,如何更正此问题?
答案 0 :(得分:1)
您遇到的是正确/预期的行为。
您引用的约定仅适用于实际HABTM关联中使用的连接表。在这种情况下,permissions_roles
将是正确的,这反映了它连接的两个模型/表。
但是,在使用ORM(Model::$hasAndBelongsToMany
)提供的HABTM功能的意义上,您没有使用实际的HABTM关联,但是您手动创建多对多关联,使用一对多许多和多对一关联,因此默认表名约定适用,其中使用了复数模型名称,即permission_roles
。
解决方案是简单地重命名你的表。