【问题标题】:CakePHP: self-referencing HABTM associations?CakePHP:自引用 HABTM 关联?
【发布时间】:2012-10-16 19:50:34
【问题描述】:

我想创建 HABTM 自关联。也就是说,用户可以与其他用户相关联。问题是这样的:我可以将一个用户的关联保存到另一个用户,但我只能以一种方式查看和编辑这些关联。这是我的协会:

'Partner' => array(
    'className' => 'User',
    'joinTable' => 'players_trainers',
    'associationForeignKey' => 'player_id',
    'foreignKey' => 'trainer_id', 
    'unique' => true
)

因此,当我呼叫用户(教练)时,我可以看到与他们相关联的球员。没有汗水。但是,当尝试从另一端查看/编辑关联时(查看球员与哪些教练相关联),什么都不会出现,因为该关联以相同的方式对待每个用户:期望从教练与球员关联。

我曾想过在我的控制器中进行动态绑定(基于用户角色),但这似乎很老套。

有没有一种简洁的方式来进行 HABTM 自关联,而无需向我的模型添加新字段?我做错了什么?

【问题讨论】:

    标签: cakephp associations


    【解决方案1】:

    尝试设置其他关联。

    var $hasAndBelongsToMany = array(
     'Partner' => array(
        'className' => 'User',
        'joinTable' => 'players_trainers',
        'associationForeignKey' => 'player_id',
        'foreignKey' => 'trainer_id', 
        'unique' => true
      ),
      'Trainer' => array(
        'className' => 'User',
        'joinTable' => 'players_trainers',
        'associatedForeignKey' => 'trainer_id',
        'foreignKey' => 'player_id',
        'unique' => true
      )
    );
    

    【讨论】:

    • 这有 2 个问题:a) find('threaded',...) 只返回“Trainers”而不是“Partners”,2) 通过表单添加合作伙伴不会似乎有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2011-04-14
    • 1970-01-01
    • 2012-05-22
    相关资源
    最近更新 更多