5.1.10 版本 hasMany() 关联方法的注释有误

浏览:2911 发布日期:2017/07/27 分类:ThinkPHP5专区
首先看 5.1.10 版本 hasMany() 方法的注释:think\Model::hasMany(string $model, string $foreignKey='', string $localKey='') : HasMany 

HAS MANY 关联定义
Parameters:
string $model 模型名 
string $foreignKey 关联外键 
string $localKey 关联主键 
再看《掌握ThinkPHP5.0数据库和模型》第八章:模型关联 中 hasMany() 方法的描述:hasMany关联
用法:hasMany(‘关联模型’,‘外键’,‘主键’);
除了关联模型外,其它参数都是可选。

关联模型(必须):模型名或者模型类名
外键:关联模型外键,默认的外键名规则是当前模型名+_id
主键:当前模型主键,一般会自动获取也可以指定传入
注意第三个参数 $localKey 的描述,前者说这是“关联主键”,后者说是“当前模型主键”。
然后参考“第八章:模型关联”中对“当前模型,关联模型”的描述:“关联关系通常有一个参照模型,这个参照模型我们一般称为主模型(或者当前模型),关联关系对应的模型就是关联模型,关联关系是指定义在主模型中的关联,有些关联关系还会设计到一个中间表的概念,但中间表不一定需要存在具体的模型。”
可见代码注释与文档描述有了相反的意思,根据实践,文档是对的。

我开始按照代码注释,将第三个参数写成“关联模型的主键“结果出错,改成“当前模型的ID“才正确。

不知道是我对代码注释理解有误,还是注释写错了,提出来供参考。
最佳答案
评论( 相关
后面还有条评论,点击查看>>