我一直在試圖將兩個外鍵保存到連接表的同一行,但沒有成功。我的Client
型號與User
和Group
型號有兩個HABTM關聯,用戶可以擁有許多客戶端,並可以在許多不同的組下創建客戶端。CakePHP - 一個HABTM有兩個外鍵
的UserClient連接表看起來是這樣的:
+----+---------+----------+-----------+
| id | user_id | group_id | client_id |
+----+---------+----------+-----------+
| 1 | 1 | 1 | 1 |
| 2 | 1 | 2 | 2 |
| 3 | 3 | 4 | 3 |
+----+---------+---------+------------+
客戶端模式:
public $hasAndBelongsToMany = array(
'User' => array(
'className' => 'User',
'joinTable' => 'UserClient',
'foreignKey' => 'client_id',
'associationForeignKey' => 'user_id'
),
'Group' => array(
'className' => 'Group',
'joinTable' => 'UserClient',
'foreignKey' => 'client_id',
'associationForeignKey' => 'group_id'
)
);
客戶視圖:
<?php echo $this->Form->create('Client'); ?>
<fieldset>
<legend><?php echo __('Add Client'); ?></legend>
<?php
echo $this->Form->input('first_name');
echo $this->Form->input('last_name');
echo $this->Form->input('email');
echo $this->Form->input('phone');
echo $this->Form->input('Client', array('multiple'=> 'false', 'options' => $group_ids));
echo $this->Form->hidden('User', array('value' => $user_id));
?>
</fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
這個工程到一個點,的但不是保存user_id
,group_id
和client_id
添加到UserClient中的同一行表中,它爲每個HABTM創建兩個單獨的行,將user_id
,client_id
保存到一行,並將group_id
,client_id
保存到另一行。
有沒有辦法在同一HABTM關聯,以便user_id
,group_id
和client_id
創建一個新的客戶時得到保存到同一行中定義多個associationForeignKey
?