【转】Laravel belongsTo 详解

摘要:
第一个参数是UserModel,第二个参数是其OrderModel的外键,第三个参数是用户表的键,这意味着OrderModel.user _ id=UserModel.udid;以下情况如何?

前提:订单表(order)和用户表(user)

表结构: 

order

CREATE TABLE `order` (
`id` char(16) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '订单号',
`user_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '用户id',
UNIQUE KEY `id` (`id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='订单表';
 

user

CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户id',
PRIMARY KEY (`id`),
`username` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '姓名',
  `password` char(60) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '' COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10009866 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表'
 

  

**表关系:**user->order :一对多

需求:在查看订单详情时显示下单用户

ModelsOrderModel中实现: 
1、当order表中外键为user_id user表主键为id时

public function user()
{
    return $this->belongsTo('ModelsUser');
}

2、当order表中外键为user_id user表主键为uid

public function user()
{
    return $this->belongsTo('ModelsUser', 'user_id', 'uid');
}

  

返回结果:

{
  "id": 17021423166486,
  "user_id": 10000003,
  "user": {
    "id": 10000003,
    "username": "",
  }
}


belongsTo和hasOne 两者相反,比如用户表和订单表:
  1.一个用户记录有多个订单 用hasMany;
  2.一个订单只有一个用户,用belongsTo(一个订单属于一个用户,查询出用户信息) ,好像也可以用hasone 一个订单有一个用户 。主要要写对参数
  第一个参数是UserModel,第二个参数是本身OrderModel的外键,第三个参数是user表的键,意思就是OrderModel.user_id=UserModel.udid;

那么如下情况又该如何呢?
比如 用户表有id,name;
订单表有order_id ,user_id ,
那么根据用户关联订单的时候,用hasMany(orderModel ,user_id,id)
根据订单查询用户详情 belongsTo(userModel,id,user_id)

from:https://www.cnblogs.com/php-linux/p/10640205.html

免责声明:文章转载自《【转】Laravel belongsTo 详解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Android基于mAppWidget实现手绘地图(十)–在放大前后执行一些操作ros-tf、四元数、欧拉角及Eigen等基本知识普及下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

mini.DataGrid使用说明

√√√ ajaxOptionsObjectajax配置对象。√√√ idFieldString是行数据的唯一字段。设置为“client”之后,客户端将排序√√√√ totalCountNumber记录总数√√√ defaultColumnWidthNumber默认列宽100√√√√ showColumnsBoolean显示标头true√√√√ showPag...

MySQL锁详解

MySQL锁详解update语句执行流程MySQL的锁介绍按照锁的粒度来说,MySQL主要包含三种类型(级别)的锁定机制:全局锁:锁的是整个database。由MySQL的SQLlayer层实现的表级锁:锁的是某个table。由MySQL的SQLlayer层实现的行级锁:锁的是某行数据,也可能锁定行之间的间隙。...

LaTex学习笔记(1)——LaTeX文档插入图片的几种常用方法

2,插入bmp图片还没有找到直接插入bmp图片的方法。用gimp或fastoneimageviewer,将jpg质量选为最高,转换之后得到的图片质量较好。3,同时插入jpg和eps图片插入的命令不变。编译时使用Latex,dvi2pdf,两种格式的图片都可以显示。...

nginx配置跨域(CORS)、防盗链(valid_referers)、缓存(expires)、压缩(gzip)

它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服AJAX只能同源使用的限制。服务器根据这个值,在许可范围内,则在头信息包含Access-Control-Allow-Origin。...

antd中,popover 不同情境下设置不同背景图,无法设置className的情况

于是就想通过设置不同的status值来添加不同的className,以设置.ant-popover-inner的样式来设置背景图,当然,这样做有一个不完美的就是不能一步到位的全部改变,需要手动更改.ant-popover-placement-bottom˃.ant-popover-content˃.ant-popover-arrow来替换那个角角的值。问题就...

nginx 浏览php的时候会变成下载

php的时候会变成下载:这是因为nginx没有设置好碰到php文件时,要传递到后方的php解释器。当然啦,你的php-fpm解析器也需要正常运行,并监听好9000端口,才能最终生效并有效处理php脚本。windows下开启监听的办法,php-cgi.exe-b127.0.0.1:9000-cphpphp.ini待续:。。。。。...