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“才正确。
不知道是我对代码注释理解有误,还是注释写错了,提出来供参考。
最佳答案
