- 普通 - 未处理
手册中指出:foreign_key [font=宋体]关联的外键名称[/font]
[font=宋体]外键的默认规则是当前数据对象名称[/font]_id[font=宋体],例如:[/font]
UserModel[font=宋体]对应的可能是表[/font]think_user [font=宋体](注意:[/font]think[font=宋体]只是一个表前缀,可以随意配置)[/font]
[font=宋体]那么[/font]think_user[font=宋体]表的外键默认为[/font] user_id[font=宋体],如果不是,就必须在定义关联的时候显式定义[/font] foreign_key
但实际操作中:
foreign_key 的值应该设置为被关联表格的外键 而并非当前模型(当前表格)的外键
也就是说不是 use_id 而是 article表格中的外键
由RelationModel.class.php中
if(strtoupper($mappingClass)==strtoupper($this->name)) {
// 自引用关联 获取父键名
$mappingFk = !empty($val['parent_key'])? $val['parent_key'] : 'parent_id';
}else{
$mappingFk = !empty($val['foreign_key'])?$val['foreign_key']:strtolower($this->name).'_id'; // 关联外键
}
------------------------------分割线-------------------------------------------
case HAS_MANY:
$pk = $result[$this->getPk()];
[color=Red]$mappingCondition .= " AND {$mappingFk}='{$pk}'";[/color]
$mappingOrder = !empty($val['mapping_order'])?$val['mapping_order']:'';
$mappingLimit = !empty($val['mapping_limit'])?$val['mapping_limit']:'';
// 延时获取关联记录
$relationData = $model->where([color=Red]$mappingCondition)->field($mappingFields)->order($mappingOrder)->limit($mappingLimit)->select();[/color]
break;
可以看出使用user_id 是错误的!
不知道有没有人碰到以上问题,如果我的发现本身存在误解的话请欢迎指出!


