ORM 关联关系

2018-10-29  本文已影响29人  爱折腾的傻小子

关于文档的注解:仅供学习所用!!!


--

ORM的映射关联关系,需要字段之间建立外键(如果指明可以省略建立外键)

映射关系

一对一:比如 **球队** 和 **球队地址** 之间的对应关系
一对多:比如 **球队** 和 **球队队员** 之间的对应关系

准备:

外键,简介:
> 一:有表members字段id、name、age
> 二:有表configs字段key、value、comment、u_age
建立外键 members.age -> configs.u_age (正向映射)(反之,反向映射)

一对一

//> hasOne方法基本用法:(正向查询)
参数一:需要管理的模型名(也就是关联外键的表的映射)
参数二:外键字段名称
参数三:本地字段与外键关联的字段名称
return $this->hasOne('App\Phone','foreign_key','local_key');

虽然参数二或三都可以省略,但是最好写上。
如果省略:参数二(默认的是id字段),参数三(默认的是user_id)这里参考文档。



相对关联:(反向查询)

//> belongsTo()方法:参数二和参数三都可以省略
belongsTo('App\User', 'foreign_key', 'other_key');
参数二:外键字段名称
参数三:本地字段与外键关联的字段名称
参数和hasOne一样

一对多

比如:一篇博客文章拥有的无数评论之间的关系,一样。

hasMany() 方法,定义一对多,和hasOne方法使用一致
三个参数的使用也是一样

一对多(反向):

//> 还是使用belongsTo方法,和上面的使用一致


多对多

简介:比如,一个用户拥有多个角色,同时一个角色又拥有多个用户。

// 我们看一下数据表之间的字段
users Table ( 用户表 )
id
name
> - - - - - - -
roles Table (角色表)
id
name
> - - - - - - -
role_user (关联表)
user_id
role_id

这里的字段字段之间,没有设置外键关联




获取中间表的字段(这里获取的时lv_role_users表,默认添加字段comment)



定义相对的关联关系:



注意:上面的users被调用时,不是当作属性使用,而是当作方法。

远程的一对多


上一篇下一篇

猜你喜欢

热点阅读