'Role' => array(
'mapping_type' => self::MANY_TO_MANY,
'class_name' => 'Role',
'mapping_name' => 'role',
'foreign_key' => 'user_id',
'relation_foreign_key' => 'role_id',
'mapping_limit' => 2
'mapping_order' => 'role_id',
'relation_table' => 'gl_user_role',
)更新内容测试代码:$data = array(
'user_name' => '陈丹',
'role' => array(
array(
'role_id' => 3,
'user_id' => 148,
),
array(
'role_id' => 4,
'user_id' => 148,
),
),
);
$Role = D('User');
$Role->relation(true)->where(array('user_id'=>148))->save($data);运行以后,主表成功修改,没有问题;然后中间表根据传入ID(user_id)删除与ID相关的所有数据。
但是在插入新数据时,最后插入中间表的附表键值获取的是主表的键值,即user_id。
UPDATE `gl_user` SET `user_name`='陈丹' WHERE `user_id` = 148
DELETE FROM `gl_user_role` WHERE `user_id` = 148
INSERT INTO gl_user_role (user_id,role_id) SELECT a.user_id,b.role_id FROM gl_user AS a ,gl_role AS b where a.user_id =148 AND b.role_id IN (148,148)上面是来自PAGE_TRACE的SQL信息,最后的148就是获取的user_id。是不是哪里设置错了,还是TP的关联模型问题?
最佳答案