【发布时间】:2014-01-19 20:04:44
【问题描述】:
我一直在尝试将两个外键保存到连接表的同一行,但没有成功。我的Client 模型与User 和Group 模型有两个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 关联中定义多个 associationForeignKey,以便在创建新客户端时将 user_id、group_id 和 client_id 保存到同一行?
【问题讨论】:
标签: php cakephp model associations has-and-belongs-to-many