Thinkphp5基础——07 模型(模型关联——查询篇)

一对一关联一对一关联有两种方式,一种是使用belongsTo()
摘要由CSDN通过智能技术生成

前言

有的时候,因为model对应的数据表有一些数据是从另外的表得来的。这种情况,我们就需要定义模型关联关系。

常用的模型关联关系分为一对一、一对多、多对多。

模型包含查询、修改等操作,混合一起描述可能会比较乱,所以我将分开讲述。


特别注意

一般来说,model类名会自动关联同名的数据表,如果想要修改这个对应关系,可以这么做:

protected $table = '表名';




一对一查询

一对一有hasOne以及belongsTo两种,那么它们对应的使用场景是怎样的呢?


先来看看官方文档:

hasOne('关联模型','外键','主键');

belongsTo('关联模型','外键','关联主键');

这里面,我们需要仔细看第三个参数

hasOne是主键,意味着本模型对应的表是主表,有一个从表通过外键关联本表(模型)的主键。

而belongsTo是关联主键,意味着本模型对应的表是从表,本表(模型)通过本表(模型)的外键关联主表(模型)的主键。


总结:外键在本表,使用belongsTo;反之,使用hasOne。



例子

商品表有外键img_id,关联着图片表的id,

这时候在商品模型应该使用belongsTo关联图片模型,因为外键在本表;

而如果图片模型想关联商品模型,应该使用hasOne,因为外键在商品表。







hasOne

hasOne('关联模型','外键','主键');

我们用代码实现一下上面的例子
	
	class Img
	{
   
	  // 定义关联方法,名字随意
	  public function product()
	  {
   
	    $this->hasOne('Product', 'img_id', 'id');
	  }
	}





belongsTo

belongsTo('关联模型','外键','关联主键');

	
	class Product
	{
   
	  // 定义关联方法,名字随意
	  public function img()
	  {
   
	    $this-
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值