Cakephp多对多使用同一个表

Cakephp多对多使用同一个表,cakephp,many-to-many,Cakephp,Many To Many,我是CakePHP新手,所以请对我放松点 我有一个我似乎无法解决的问题。我有一个“联系人”表,希望此表与其自身具有多对多关系。目的是证明联系人与来自同一公司的其他联系人相关。因此,当单击联系人的个人资料时,我将能够查看与该特定人员相关的其他联系人 我不知道如何处理这个问题。我正在考虑一个联接表,但似乎不可能?或者我可能错了。如果有人知道如何做到这一点,请留下尽可能多的细节,以便我能够理解如何做到这一点(正如前面所述,我是CakePHP新手) 谢谢 编辑:尝试了User996302所述的方法,但仍

我是CakePHP新手,所以请对我放松点

我有一个我似乎无法解决的问题。我有一个“联系人”表,希望此表与其自身具有多对多关系。目的是证明联系人与来自同一公司的其他联系人相关。因此,当单击联系人的个人资料时,我将能够查看与该特定人员相关的其他联系人

我不知道如何处理这个问题。我正在考虑一个联接表,但似乎不可能?或者我可能错了。如果有人知道如何做到这一点,请留下尽可能多的细节,以便我能够理解如何做到这一点(正如前面所述,我是CakePHP新手)

谢谢

编辑:尝试了User996302所述的方法,但仍不起作用

这是关系联系人模型的一部分:

public $hasAndBelongsToMany = array( 'Relation' => array( 'className' => 'Contact', 'joinTable' => 'contacts_contacts', 'foreignKey' => 'contact_id', 'associationForeignKey' => 'related_id', 'unique' => true, 'conditions' => '', 'fields' => '', 'order' => '', 'limit' => '', 'offset' => '', 'finderQuery' => '', 'deleteQuery' => '', 'insertQuery' => '' ) ); 
我正在控制器中使用saveAll函数。 在控制器的“添加”部分中,我在末尾有以下内容:

$relations = $this->Contact->Relation->find('list');     $this->set(compact('relations'));
在“添加视图”页面中,我有以下代码行显示选择框:

echo $this->Form->input('Relation', array('type'=>'select', 'multiple' => true));
我有一个contacts和一个contacts\u contacts表。contacts\u contacts表有三个属性:id、contact\u id、related\u id

我已经做了所有这些,但是表单中的选择列表没有显示任何我可以选择的联系人。
不知道问题出在哪里。任何帮助都会很好

这些链接应该对您有所帮助:


编辑以更正错误。

这些链接应该可以帮助您:


编辑以更正错误。

两个链接示例都使用联接表。尽管如此,它们还是很好地解决了这个问题。你是对的。这造成了混乱,因为在cakephp中看不到联接表,除非它是HABTM-through。也许我做错了什么……我不确定。这是关系联系人模型的一部分:public$hasandbelongtomany=array('Relation'=>array('className'=>'Contact','joinTable'=>'contacts\u contacts','foreignKey'=>'Contact\u id','associationForeignKey'=>'Contact\u id2','unique'=>true,'conditions'=>'','fields'=>'','order'=>'','limit'=>,'offset'=>,'finderQuery=>,'deleteQuery=>,'insertQuery=>);在控制器中,我正在使用saveAll,并且有:$relations=$this->Contact->relations->find('list');$this->set(compact('relations');在添加视图页面中:echo$this->Form->input('relations',array('type'=>select',multiple'=>true));我有一个contacts表和一个contacts\u contacts join表。contacts\u contacts表有三个属性:id、contact\u id、contact\u id2我是否在这里缺少什么?选择要链接的联系人的列表根本没有显示在表单中。
“associationForeignKey”=>“contact\u id2”
是错误的。它一定是某种形式的_id.No 2.表中相同。两个链接的示例都使用联接表。不过,它们是问题的一个很好的解决方案。你是对的。造成了混乱,因为你在cakephp中看不到联接表,除非它是HABTM。我在示例中尝试了该方法,但仍然不起作用。也许我做错了什么…我不确定。这是一个po关系联系人模型的rtion:public$hasAndBelongsToMany=array('Relation'=>array('className'=>'Contact','joinTable'=>'contacts\u contacts','foreignKey'=>'Contact\u id','associationForeignKey'=>'Contact\u id2','unique'=>true,'conditions'=>'','fields'=>'','order'=>'','limit'=>,'offset'=>,'finderQuery=>,'deleteQuery=>,'insertQuery=>);在控制器中,我正在使用saveAll,并且有:$relations=$this->Contact->relations->find('list');$this->set(compact('relations');在添加视图页面中:echo$this->Form->input('relations',array('type'=>select',multiple'=>true));我有一个contacts表和一个contacts\u contacts join表。contacts\u contacts表有三个属性:id、contact\u id、contact\u id2我是否在这里缺少什么?选择要链接的联系人的列表根本没有显示在表单中。
“associationForeignKey”=>“contact\u id2”
是错误的。它一定是某种形式的_2号身份证。表中相同。