美文网首页
ORM 关联关系

ORM 关联关系

作者: 爱折腾的傻小子 | 来源:发表于2018-10-29 11:00 被阅读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被调用时,不是当作属性使用,而是当作方法。

    远程的一对多


    相关文章

      网友评论

          本文标题:ORM 关联关系

          本文链接:https://www.haomeiwen.com/subject/ipvyittx.html