【问题标题】:CakePHP 3 - Nested Eager Loading ErrorCakePHP 3 - 嵌套急切加载错误
【发布时间】:2015-10-03 04:01:11
【问题描述】:

我有 3 个具有多对多关系的表:

  • 用户
  • 群组
  • 工具

我有 3 个用于关系的数据透视表:

  • groups_users
  • tools_users
  • groups_tools

我正在尝试获取用户 -> 工具和用户 -> 组 -> 工具:

$user = TableRegistry::get('Users')
                        ->find()
                        ->where(['id' => 1])
                        ->contain(['Tools'])
                        ->contain(['Groups.Tools'])
                        ->first();

但我收到一条错误消息:“群组与工具没有关联”

我遵循所有约定,创建了类:

  • GroupsTable,在初始化方法处有如下关系

    $this->belongsToMany('Tools');
    $this->belongsToMany('Users');
    
  • ToolsTable,在初始化方法处有如下关系

    $this->belongsToMany('Users');
    $this->belongsToMany('Groups');
    
  • UsersTable,在初始化方法中有如下关系

    $this->belongsToMany('Tools');
    $this->belongsToMany('Groups');
    

【问题讨论】:

    标签: cakephp orm eager-loading


    【解决方案1】:

    出现问题是因为我正在创建一个插件,然后这些类在插件文件夹中。

    然后你需要更改表关系以包含命名空间插件:

    GroupsTable,在初始化方法处有如下关系

    $this->belongsToMany('YourPluginName.Tools');
    $this->belongsToMany('YourPluginName.Users');
    

    ToolsTable,在初始化方法处有如下关系

    $this->belongsToMany('YourPluginName.Users');
    $this->belongsToMany('YourPluginName.Groups');
    

    UsersTable,在初始化方法中具有如下关系

    $this->belongsToMany('YourPluginName.Tools');
    $this->belongsToMany('YourPluginName.Groups');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-28
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 2019-07-29
      • 2019-07-13
      相关资源
      最近更新 更多