嵌套关联查询下的主键和外键是怎么区分的

来源:8-3 模型关联----嵌套关联查询

超丁

2017-07-04

我不明白在嵌套关联查询下的belongsTO("image","img_id",“id”)这句话的img_id作为外键,而不是belongsTO("image",“id“,"img_id"),而且按照语义化,image表在这里充当的是关联表的主键关系吗?这里的id应该是指的是image下的id呀,(elongsTo(‘关联模型名’,‘外键名’,‘关联表主键名’,[‘模型别名定义’],‘join类型’);
)      学生迷茫,请老师指点

写回答

1回答

湖南津彩

2017-07-10

主表:banner_item,对应模型:BannerItemModel
外表:image        对应模型:ImageModel
主表上才有外键,外键定义:在主表里面存储的外面表里面的id键,叫外键
1.首先belongsTo()方法只能出现在主表的模型(Model)中,如项目中的BannerItemModel,对应banner_item(主表)
当在主表模型(BannerItemModel)中要表示与外表模型(ImageModel)一对一的关系时使用belongTo(),反过来要在外表模
型(ImageModel)中表示与主键一对一关系时需要使用hasOne()
2.BannerItemModel->belongTo()方法既然只能在主表(BannerItemModel)中使用,那么自然而然的第一个参数就是要关联的外表名称,第二个参数
是外键id(img_id),第3个参数就是外表(image)id了
3.从上可以看出是依照主->次的顺序来填写各个参数的,这样理解就对了。正如调用也是从BannerItemModel->belongTo()主->次的顺序
1
1
周康武
banner 是外表, bannerItem 是主表, 所以主表bannerItem的banner_id就是外键, banner 的id 就是外表id 这样理解吗? 如果是这样 items 方法是不是应该写在BannerItemModel 里面合适一点,实际上课程写在了BannerModel 里面, 求解?
2019-07-16
共1条回复

微信小程序电商实战 从前端到后端的全流程精讲

全栈工程师/前后端都讲/架构思想/ RESTFul API、MySQL表设计

4805 学习 · 4382 问题

查看课程