Laravel Eloquent 关联模型使用技巧

简介: 关联模型

关联模型


返回默认模型


这个特别重要!!!能避免关联数据不存在时导致的致命错误。


比如,我们可以在 belongsTo 关系中设置返回一个默认的模型,从而避免类似于使用 {{ $post->user->name }} 当 $post->user 不存在的时候,引起的致命的错误。


public function user()
{
    return $this->belongsTo('App\User')->withDefault();
}


在 Eloquent 关系中使用 OrderBy


可以在关联关系中直接指定 orderBy ()


比如设置关联关系的制售,指定根据name字段排序


public function products()
{
    return $this->hasMany(Product::class);
}
public function productsByName()
{
    return $this->hasMany(Product::class)->orderBy('name');
}


在 Eloquent 关系中添加条件


如果我们经常在模型关联关系中添加某些相同的 where 条件,可以抽取成一个独立方法。

指定和评论关联关系的同时,设置了approved=1,外部在调用的时候就可以直接调用这个方法了。


//指定和评论的关联关系
public function comments()
{
    return $this->hasMany(Comment::class);
}
//指定和评论关联关系的同时,设置了approved=1,外部在调用的时候就可以直接调用这个方法了。
public function approved_comments()
{
    return $this->hasMany(Comment::class)->where('approved', 1);
}


DB 原生查询: havingRaw ()


我们可以在很多地方使用原始数据库查询,比如在 groupBy() 后面调用 havingRaw()


Goods::groupBy('category_id')->havingRaw('COUNT(*) > 1')->get();


Eloquent 使用 has () 实现多层调用查询


我们可以在关联关系查询中使用 has() 实现两层关联查询。


// Teacher -> hasMany(Class::class);
// Class -> hasMany(Student::class);
$teachers = Teacher::has('classes.students')->get();


一对多关系中获取符合指定数量的数据


在一对多关系中,我们可以通过条件过滤,获取符合的数据。

比如需要查找有哪些老师负责的班级数量大于 5。


// Teacher -> hasMany(Class::class)
$teachers = Teacher::has('classes', '>', 5)->get();


一对多关系中一次创建多条关联数据


在一对多关系中,我们可以使用 saveMany() 通过一次提交,保存多条关联数据。


$article = Article::find(1);
$article->comments()->saveMany([    new Comment(['message' => 'First comment']),
    new Comment(['message' => 'Second comment']),
]);


多层级渴求式加载


在 Laravel 中,我们可以在一条语句中渴求式加载多个层级。


$users = App\Book::with('author.country')->get();


渴求式加载特定字段


我们可以在 Laravel 中渴求式加载并指定关联中的特定字段。


$users = App\Book::with('author:id,name')->get();


我们还可以在深层级中这样做,如第二层级关系:


$users = App\Book::with('author.country:id,name')->get();


相关文章
|
11月前
|
存储 弹性计算 测试技术
10分钟私有部署QwQ-32B模型,像购买Ecs实例一样快捷
虽然阿里云提供了基于 IaaS 部署 QwQ-32B 模型的方式,但传统的基于IaaS的部署方式需要用户自行配置环境、安装依赖、优化硬件资源,并解决复杂的网络与存储问题,整个流程不仅耗时耗力,还容易因操作失误导致各种不可预见的问题。 因此,阿里云计算巢提供了基于ECS镜像与VLLM的大模型一键部署方案,通过ECS镜像打包标准环境,通过Ros模版实现云资源与大模型的一键部署,用户无需关心模型部署运行的标准环境与底层云资源编排,10分钟即可部署使用QwQ-32B模型,15分钟即可部署使用Deepseek-R1-70B模型。
|
异构计算
CCF推荐B类会议和期刊总结:(计算机体系结构/并行与分布计算/存储系统领域)
中国计算机学会(CCF)定期发布国际学术会议和期刊目录,为科研人员提供参考。本文总结了计算机体系结构、并行与分布计算、存储系统领域的CCF推荐B类会议和期刊,包括会议和期刊的全称、出版社、dblp文献网址及领域分类。会议涵盖了SoCC、SPAA、PODC等26项重要国际会议,期刊则包括TAAS、TODAES、TECS等9种权威期刊,为相关领域的研究者提供了宝贵的资源。
CCF推荐B类会议和期刊总结:(计算机体系结构/并行与分布计算/存储系统领域)
|
分布式计算 Java 大数据
大数据-147 Apache Kudu 常用 Java API 增删改查
大数据-147 Apache Kudu 常用 Java API 增删改查
191 1
|
算法 固态存储 调度
操作系统:磁盘组织与管理
操作系统:磁盘组织与管理
|
机器学习/深度学习 数据可视化 数据挖掘
【机器学习实战】10分钟学会Python怎么用Ridge岭回归进行正则化(十三)
【机器学习实战】10分钟学会Python怎么用Ridge岭回归进行正则化(十三)
1566 0
|
存储 IDE 安全
各种电脑bios图解中文教程(超级详细的BIOS设置大全图解)
各种电脑bios图解中文教程(超级详细的BIOS设置大全图解)
33113 0
|
Python
Python|埃氏筛法求质数
Python|埃氏筛法求质数
256 0
|
JSON 监控 网络协议
Nginx最常用的七种模块配置
1.Nginx目录索引 Nginx默认是不允许列出整个目录浏览下载 配置目录索引的命令 语法格式:autoindex on | off ; on开启 off关闭 默认配置:autoindex off; 如果默认开启的话所有的文件都会以列表形式累出来,这些文件是不能给用户看到的 配置区域:http(对所有站点生效)、server(对单个站点生效)、location(对单个页面生效,最常用) autoindex常用参数
1534 0
Nginx最常用的七种模块配置
|
机器学习/深度学习 人工智能 搜索推荐
《云上社交行业技术服务白皮书》——第三章 云上社交典型场景与架构——3.2 细分领域社交——3.2.1 母婴场景(上)
《云上社交行业技术服务白皮书》——第三章 云上社交典型场景与架构——3.2 细分领域社交——3.2.2 电商场景(1)
661 0
|
算法 Java 程序员
使用位运算方法实现十进制数字转换为十六进制数
给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。
使用位运算方法实现十进制数字转换为十六进制数

热门文章

最新文章