搜索
系统检测到您的用户名不符合规范:

TP3.2.2关联模型多对多关联更新问题

浏览:1879 发布日期:2014年08月19日 分类:求助交流 关键字: 关联模型 多对多
关联模型代码:'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的关联模型问题?
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
Kraddy
积分:910 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /