关于关联模型 于数据库字段 大小写问题

浏览:1253 发布日期:2014/11/15 分类:求助交流 关键字: 关联模型 大小写 数据表 HAS_MANY
今天做一个关联模型 HAS_MANY可是 MANY集合一直为空
如图

可是数据库里面是有数据的
模型定义没有问题<?php
namespace Home\Model;
use Think\Model;
use Think\Model\RelationModel;
class TagModel extends RelationModel {
    protected $_link = array(
        'Childs'=>array(
            'mapping_type'  => self::HAS_MANY,
            'class_name'=>'tag',
            'mapping_name'=>'Childs',
            'foreign_key'=>'ParentId',
            'parent_key'=>'ParentId'
        )
    );
}
然后我直接查看日志
发现以下内容
NOTIC: [8] Undefined index: Id D:\wamp\www\ThinkPHP\Library\Think\Model\RelationModel.class.php 第 169 行.
找到该行代码如下$pk   =  $result[$mappingKey];我试着 dump下 $result、$mappingKey和$pk的值
结果如下图

$result正常、$mappingKey为'Id' $pk为空
问题出来了 $reslut里面的主键 'id'是小写的 而$mappingKey是大写开头的'Id' 所以$pk找不到造成了后面的一系列问题
$mappingKey如何来的呢 看一下定义$mappingKey =!empty($val['mapping_key'])? $val['mapping_key'] : $this->getPk(); // 关联键名$val['mapping_key']是空的 $mappingKey调用的是$this->getPK()获取的主键'Id'
试着把$mappingKey改为小写 结果正常了
为什么getPk()获取的是大写开头的'Id' 而$result获取的数据里面字段都是小写的呢
可以看下我的数据表 如下图

字段都是大写的
我的问题是 为什么$result获取的字段全部变成了小写呢 而$mappingKey却是正常的数据库大小写格式
我试着在Model中添加主键protected $pk     = 'id';但是getPk()获取的还是大写开头的数据库主键格式'Id'
有相关的配置吗 还是数据库表的字段设计要全小写呢 还是系统(windows)的原因 ?
最佳答案
评论( 相关
后面还有条评论,点击查看>>