laravel 关联关系—通俗易懂

belongsTo

A.前提:有两个实体表 user 和 type  user 表中有外键 type_id 关联 type 表
	在 user 模型内创建与 type 的关联关系时,用belongsTo;

hasMany

	
		在type 模型内创建与 user 关联关系时,如果是一对多 :hasMany;

hasOne

	在type 模型内创建与 user 关联关系时,如果是一对一 :hasOne;

belongsToMany

有两个实体表 user 和 permission 和一个非实体表 user_has_permissions (字段:user_id & permission_id),
	a.在user模型内创建与permission的关联关系时候	belongsToMany(Permission::class,"user_has_permissions",'user_id','permission_id');
			
	b.在permission模型常见与user的关联关系时候	belongsToMany(User::class,"user_has_permissions",'permission_id','user_id');

未完待续

远程一对一

前提:

user 与 phone 关系是一对一,
	我们采用上面的 hasOne可以实现

phone 与 brand 关系是一对一
	我们也可以采用上面的 hasOne可以实现

但是当我们 相关联 user与brand 一对一的关系 原来实现的方法是 user 通过 phone 模型 再找到 brand ,这样 sql 打印是查询了两条语句,性能上并不友好;

我们可以采用 hasOneThrough 远程一对一 实现 这样仅仅查询sql 语句
user  模型下 
	return $this->hasOneThrough('App\Models\Brand', 'App\Models\Phone');

	return $this->hasOneThrough(
	            'App\Models\Brand',
	            'App\Models\Phone',
	            '', // phone外键...
	            '', // brand外键...
	            '', // user 主键...
	            '' // Phone 主键...
	        );
这篇文章 解释的很清晰,
	https://www.jianshu.com/p/d7e5ee17e5ed
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值