2

我是 CakePHP 的新手,所以请放轻松。

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

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

谢谢!!

编辑:尝试了 User996302 所述的方法,但仍然无法正常工作。

这是关系的 Contact 模型的一部分:

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 表。contacts_contacts 表具有三个属性:id、contact_id、related_id。

我已经完成了所有这些,但表单中的选择列表没有显示任何我可以选择的联系人。不确定问题出在哪里。任何帮助都会很棒!

4

1 回答 1

0

这些链接应该对您有所帮助:exampleSO question on the question

编辑以纠正错误。

于 2012-07-29T11:59:20.550 回答