关联模型的问题
时间:2011-08-02
来源:互联网
MANY_TO_MANY的时候,如果前台传过来的关联字段值,不是array,只传了一个单独的值,会造成错误
比如我的User/Role关联模型
定义:
复制代码
前台传值:
id:
username:
nickname:
password:
email:
......
role_id: 22
protected function opRelation($opType,$data='',$name='')
方法中:
复制代码
这个地方有问题
因为前台传过来的role_id只有一个字符串值22
所以这里的$mappingData 解析后是:array('id'=>22)
foreach之后
$vo直接就是22了,不是array
所以$ids[] = $vo[$model->getPk()]; 这行代码有问题了,这样取的是$vo的length了
比如我的User/Role关联模型
定义:
- protected $_link = array(
- 'Role' => array(
- 'mapping_type' => MANY_TO_MANY,
- 'mapping_name' => 'Role',
- 'class_name' => 'Role',
- 'foreign_key' => 'user_id',
- 'relation_foreign_key'=>'role_id',
- 'relation_table'=>'hy_role_user',
- ),
- );
id:
username:
nickname:
password:
email:
......
role_id: 22
protected function opRelation($opType,$data='',$name='')
方法中:
- if(is_array($mappingData)) {
- $ids = array();
- foreach($mappingData as $vo){
- if(is_array($vo))
- $ids[] = $vo[$model->getPk()];
- }
- $relationId = implode(',',$ids);
- }
因为前台传过来的role_id只有一个字符串值22
所以这里的$mappingData 解析后是:array('id'=>22)
foreach之后
$vo直接就是22了,不是array
所以$ids[] = $vo[$model->getPk()]; 这行代码有问题了,这样取的是$vo的length了
作者: lscgzwd 发布时间: 2011-08-02
我暂时把这行程序改了
改成:
复制代码
了
改成:
- if(is_array($mappingData)) {
- $ids = array();
- foreach($mappingData as $vo){
- if(is_array($vo)){
- $ids[] = $vo[$model->getPk()];
- } else {
- $ids[] = $vo;
- }
- }
- $relationId = implode(',',$ids);
- }
作者: lscgzwd 发布时间: 2011-08-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28