【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模式,路由也不支持正 ...
随机推荐
- [runtime] MAObjCRuntime
MAObjCRuntime 源码地址:(引入头文件MARTNSObject.h即可,非arc环境下) http://pan.baidu.com/s/1eQ6776U https://github.co ...
- 用户组篇endgrent getpw getuid
endgrent(关闭组文件) 相关函数 getgrent,setgrent 表头文件 #include<grp.h> #include<sys/types.h> 定义函数 v ...
- 机器学习简史brief history of machine learning
BRIEF HISTORY OF MACHINE LEARNING My subjective ML timeline (click for larger) Since the initial sta ...
- Objective-C:浅复制(拷贝)
浅复制:复制对象时,如果对象中包含对象类型的实例变量,只是复制指针.新对象中的对象类型实例变量和旧对象中的对象类型实例变量指的是同一个对象.任何一方实例变量对对象做修改,另一方实例变量指向的该对象也就 ...
- 3D屏保:N皇后
前几天园子里有人发表关于8皇后的算法.只有代码,没有能运行的DEMO多枯燥.于是我这两天抽时间写了个N皇后的屏保程序.程序启动后会从4皇后到14皇后显示其所有排列,每隔0.5秒自动切换一次.按下空格键 ...
- Informatica 常用组件Lookup之六 查询
PowerCenter 基于您在查找转换中配置的端口和属性来查询查找.当第一行输入到查找转换时,PowerCenter 运行一个默认的 SQL 语句.如果使用关系查找,您可以在"查找 SQL ...
- 第七章 常用Java集合类总结
7.1.List(允许重复元素) ArrayList: 底层数据结构:Object[] 在查询(get).遍历(iterator).修改(set)使用的比较多的情况下,用ArrayList 可扩容,容 ...
- 剑指offer-序列化二叉树
请实现两个函数,分别用来序列化和反序列化二叉树 以前提交的内存超出了,可能现在要用非递归实现了 #include<iostream> #include<math.h> #inc ...
- Median of Two Sorted Array leetcode java
题目: There are two sorted arrays A and B of size m and n respectively. Find the median of the two sor ...
- C#中HTML和UBB互相转换的代码
C#中HTML和UBB互相转换的代码html转UBB的还不是很完美,有空修改,一些代码来自百度谷歌 private string DoHtmlToUBB(string _Html) { ...