ThinkPHP中的关联模型极大的方便了我们的数据处理,但是一不留神就会掉进它的坑里,今天下午有个同事就不幸中招了,这位同事本来想通过关联模型来查询数据,一个非常简单的需求,但查询出来的数据死活都是空,后来查看日志才知道,映射的字段不对。故在此做个备忘,希望广大程序员们能跳过这个坑。
涉及的关联模型:HAS_ONE,HAS_MANY,MANY_TO_MANY
众所周知,在定义以上关联模型时,需要设置foreign_key属性,但是这个属性默认映射的字段是一个表的主键,在ThinkPHP中,主键的字段名称默认就是id,那么问题来了,在有些业务流程中,我们希望与foreign_key映射的是我们自定义的字段,而不是主键id,这种情况下,我们只需要增加一个mapping_key属性即可。注意,它与foreign_key属性的区别:
foreign_key:属性值必须是被关联表中的某个字段
mapping_key:属性值必须是主表中的某个字段