【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模式,路由也不支持正 ...
随机推荐
- ldap安装配置过程中遇到的错误,以及解决方法
错误1: [root@openldap openldap]# ldapsearch -LLL-W -x -H ldap://etiantian.org -D "cn=admin,dc=eti ...
- JavaScript 触发click事件 兼容FireFox,IE 和 Chrome
解决了火狐下无法触发click事件的问题 <script language="javascript"> function test2(name) { if(docume ...
- 关于查询排序DTO的封装
DTO: public class SortDto { //排序方式 private String orderType; //排序字段 private String orderField; publi ...
- Git 学习(八)其他
Git 学习(八)其他 通过以上七章Git的学习,基本操作已差不多了,本章介绍一点落网之鱼: 包括如何忽略文件.配置别名.以及使用GitHub等. 当然,Git的强大远不是七章内容可概括的,之后可结 ...
- @JVM新一代的垃圾回收算法
垃圾回收的瓶颈 传统分代垃圾回收方式,已经在一定程度上把垃圾回收给应用带来的负担降到了最小,把应用的吞吐量推到了一个极限.但是他无法解决的一个问题,就是Full GC所带来的应用暂停.在一些对实时性要 ...
- linux编程合并多个静态库.a为一个.a
.a 文件的结构和.tar文件就没有什么区别. x 命令解出来, a 命令添加, t命令列表 假设A.a, B.a C.a 在/usr/local/lib目录下 mkdir /tmp/libABC c ...
- jQuery的搜索关键词自动匹配插件
相信许多人都会用过搜索栏自动匹配关键词的功能,无论是像google的专业搜索引擎,还是普通的网站,现在许多都用上了这种关键词匹配技术,本文介绍的用jQuery实现的关键词匹配技术,当然要整合到自己的系 ...
- UNdelete
--90兼容模式以上,2005+ -- http://raresql.com/2012/10/24/sql-server-how-to-find-who-deleted-what-records-at ...
- jsp链接sqlserver连不上
有时候出现程序没有错误,但是就是连不上数据库的毛病,有时候是链接端口错误. private String url="jdbc:microsoft:sqlserver://localhost: ...
- 如何配置Ubuntu 16.04 GRUB 2引导加载程序
正如你所知,GRUB 2 是大多数 Linux 操作系统的默认引导加载程序.GRUB 是 GRand Unified Bootloader 的缩写,它是 Linux 启动时首先要加载的一个程序,此后它 ...