【问题标题】:Cakephp hasManyThrough looking for wrong associated tableCakephp hasManyThrough 寻找错误的关联表
【发布时间】:2014-07-22 22:12:32
【问题描述】:

我与

有 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'
    );
}

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

“错误:模型 PermissionRole 的表 permission_roles 未在数据源默认值中找到”

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

【问题讨论】:

  • 您的数据库中是否有“permission_roles”表?

标签: cakephp model relationship


【解决方案1】:

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

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

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

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

【讨论】:

  • 有了这个解释,这一切突然变得有意义。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-29
  • 2017-11-27
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多