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

浏览:1887 发布日期: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的关联模型问题?
最佳答案
评论() 相关
后面还有条评论,点击查看>>