【laravel5.4 + TP5.0】hasOne和belongsTo的区别
1、从字面理解:假如A比B大,那么A hasOne B; B belongsTo A;
2、个人总结:

3、从代码角度:
主要是看你是在哪一个model(模型)中编写这个关联关系,父关联对象就是在父关联model(本文是在Products的model类)下编写的关联模型。
has_one(或has_many):外键在子关联对象中
//父关联对象表
Products{
id
product_name
}
//子关联对象表
Image{
image_id
img_name
product_id //foreign key
} //hasOne方法的参数包括:
//hasOne('关联模型名','外键名','主键名',['模型别名定义'],'join类型');
//默认的join类型为INNER
//写在Products的model类中
public function Img(){
$this->hasOne('Image','product_id','id');
}
belongs_to:外键在你父联对象中
//父关联对象表:
Product{
product_id
img_id //foreignkey
product_name
}
//子关联对象表
Image{
id
img_name
} //belongsTo方法的参数包括:
//belongsTo(‘关联模型名’,‘外键名’,‘关联表主键名’,[‘模型别名定义’],‘join类型’);
//默认的join类型为INNER
//写在Products的model类中
public function Img(){
$this->belongsTo('Image','img_id','id');
}
laravel5.4中hasOne和belongsTo、hasMany区分:
/*
* 下面三种写法:第一种会报错(前提:在Admin模型写入users表的模型关系hasOne、belongsTo和hasMany)
* 因为User模型,我们并没有写入position的模型关联方法
* 而Admin::XX 和new Admin 不报错,因为写入了position方法
*/
$users = new \App\Admin();
$uuu = User::find($this->user_id)->position->pos_name;
var_dump($uuu);
$users = new \App\Admin();
$uuu = $users::find($this->user_id)->position->pos_name;
var_dump($uuu);
$uuu = Admin::find($this->user_id)->department->dep_name;
var_dump($uuu);
//依据一个部门只能属于一个公司,而一个部门却可以有多个user,gogo
//$company_msg = Department::find(2)->company->company_name; //【一对一】、【多对一】 这种是正确的,别动了
$usernames = Department::find(6)->user()
->where('is_del','<>','1')
->pluck('username'); //一对多关系
$username_arr = [];
foreach($usernames as $v){
$username_arr[] = $v; //输出纯一维数组
}
var_dump($usernames);
echo "<br>";
var_dump($username_arr);
【laravel5.4 + TP5.0】hasOne和belongsTo的区别的更多相关文章
- tp5.0和tp3.2的区别
1. 控制器输出return $this->fetch(); ----5$this->display(); ----3.2 单字母函数去掉了 如:M() D() U() S() C() 3 ...
- Tp5.0 PHPMailer邮件发送
今天突然想起来邮件发送,就看了一下PHPmailer,其实这个用起来很简单,都是封装好的 https://github.com/PHPMailer/PHPMailer,直接下载下来之后,把他放入TP5 ...
- tp5.0.7 修复getshell漏洞
这里 接手项目用的是 tp5.0.7 突然想到前段事件的tp bug 事件 就试了下 发现确实有这种情况 参考帖子: https://bbs.ichunqiu.com/thread-48687-1-1 ...
- TP5.0 PHPExcel 数据表格导出导入(引)
TP5.0 PHPExcel 数据表格导出导入(引) 今天看的是PHPExcel这个扩展库,Comporse 下载不下来,最后只能自己去github里面手动下载,但有一个问题就是下载下来的PHPExc ...
- tp5.0 SHOW COLUMNS FROM 生成数据表字段缓存
TP5.0 生成数据表字段缓存 =控制台执行以下命令= 1.生成指定数据库的所有表字段缓存 php think optimize:schema --db databaseName 2.生成指定数据表的 ...
- 关于 tp5.0 阿里云 oss 上传文件操作
tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题 应该是移动后的路劲(相对于服 ...
- TP5.0中多图上传文件名重复问题
最近在做项目的时候出现了一个问题,这里记录一下: 问题: 使用TP5.0框架自带的文件上传方法后,发现多图上传可能会出现文件名重复的问题. 问题代码: 找到TP5框架上传文件命名方法,/thinkph ...
- TP5.0生成模块(home/admin)命令
TP5.0> 进入项目根目录(tp5/),执行以下命令: > php think make:controller 模块名/控制器名 //语法 > php think make:con ...
- 【TP3.2与TP5.0区别】
Tp3.2 和 Tp5.0之间的区别 5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正 ...
随机推荐
- SpringMVC @RequestBody 接收Json数组对象
@RequestMapping(value="/signIn",method=RequestMethod.POST) public int saveUser(@RequestBod ...
- struts2怎么实现页面到页面之间的传值?
我要实现一个产品订购的功能,在浏览产品的时候通过点击一个订购的链接,跳转到提交订单的页面,在跳转的同时要把浏览的产品的名称和型号传到提交订单的页面,并且把这里的订单类的产品名称和型号的表单域里赋上传递 ...
- D - I Think I Need a Houseboat(1.3.1)
Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Status Descr ...
- strchr实现
char* strchr(char*s,charc) { while(*s!='\0'&&*s!=c) { ++s; } return*s==c?s:NULL; } // strchr ...
- [转]VS2010快捷键
VS2010的快捷键,后附VS2008的快捷键 Ctrl+E,D ----格式化全部代码 Ctrl+E,F ----格式化选中的代码 CTRL + SHIFT + B生成解决方案 CTRL + F7 ...
- 开发winform程序,在拖拽控件大小时,VS会卡死
你可以看看你最近有没有装什么新的软件,比如说:有道词典就会与VS有冲突,导致卡死,可以把进程关闭.
- WebViewClient 简介 API 案例
代码位置:https://github.com/baiqiantao/WebViewTest.git 设计思想理解 在WebView的设计中,不是什么事都要WebView类干的,有相当多的杂事是分给其 ...
- PHP 解决版本问题:"Assigning the return value of new by reference is deprecated"
问题描述: 在最近使用ECSHOP v273帮客户建立了一个商城系统,商城搭建一切ok但在使用中后台发现了一个500错误 在服务器上访问该地址发现了错误信息:"Assigni ...
- [Javascript] Closure Cove, 1
Returning a function from a function, complete with variables from an external scope, is called a cl ...
- 支持各种控件上/下拉刷新的android-pulltorefresh
android- pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新,如ListView.ViewPager.WevView. ExpandableListView.Grid ...