首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel Eloquent 模型关联关系(下)

性能上来说,渴求式加载更优,因为它会提前数据库一次性查询所有关联数据,而懒惰式加载每次查询动态属性的时候才会去执行查询,会多次连接数据库,性能上差一些(数据库操作主要开销在数据库连接上,所以开发过程如果想优化性能...,假设要循环 N 次的话,加上文章模型本身的获取,总共需要进行 N + 1 次查询,而 PHP 对数据库的连接是短连接,每次都要重新连接数据库,所以性能角度考虑不建议使用这种方式。...多关联的绑定与解除 插入多关联记录的时候,可以通过上面一多关联记录插入的方式。...protected $touches = [ 'commentable' ]; 属性是对应关联方法的名称,支持配置多个关联关系。...,我们分了三篇的篇幅来介绍 Eloquent 模型的管理关系,回顾一下,主要包含以下内容: 七种关联关系的定义:一一、一、远层一、一一的多态关联、一的多态关联、的多态关联;

19.5K30

Laravel 模型关联基础教程详解

Laravel 定义模型关联是每个 Laravel 开发者可能已经做过不止一次的事情。但是试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样的关联,你应该选择哪一个?...Laravel 有 3 种不同的关联类型。 一一 一 我们将逐个探讨不同的关联类型并解释一下应该什么时候使用它们。 一一 一一关联是目前存在的最基本的关联。...你可以 Laravel 定义的下一个关联是一多关联。...用户可以拥有多个账单,但账单仅属于一个用户。 代码是这样写的: <?...你可以通过创建迁移文件 Laravel 创建此中间表。 远程关联 远程一一 has one through 关联通过单个中间关联模型实现。

5.5K31
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel学习记录--Model

Model关联 一一 一 渴求式加载 远层一 多态关联 多多态关联 一一 1:1最基本的关联关系 ,如一个User模型关联一个Phone模型,为了定义此关联,我们需User模型定义一个...相匹配的记录 dd($res); } 一一反向关联 在上面我们muser模型访问到phone模型,现在从phone模型访问muser模型 在此之前我们需phone模型定义muser...如文章与评论的关系,一篇文章会有多个评论 文章模型使用hasMany() hasMany()与hasOne()语法一致,这里不予介绍 //获取文章的评论 public function...渴求式加载多个关联关系 有时候你需要在单个操作渴求式加载多个不同的关联关系,要实现这一功能,只需添加参数到with方法即可 ,以逗号分割 如,查询文章的作者即所在栏目 嵌套的渴求式加载 要使用嵌套的渴求式加载的关联关系...调用save方法向Phone模型插入 这里Eloquent自动phones表添加了uid字段,并插入正确的 使用saveMany添加多个 $user = \App\Muser::find

13.4K20

一种 Laravel 简单设置多态关系模型别名的方式

作为 Laravel 的重度使用者肯定都对多态关系不陌生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型的关系就是多态(Many To Many (Polymorphic...我当然会选择 trait 方式来实现,不管定义还是代码耦合度上,使用 trait 来解决这类特性需求都是再适合不过了,如果你 trait 还不太熟悉,可以阅读我之前的文章:《我所理解的 PHP Trait...》[2] 我们的目标是使用表名来做为关系类别名,那么模型如何获取表名呢,直接使用模型的 getTable 即可,那么整个 trait 的实现如下: app/Traits/UseTableNameAsMorphClass.php...UseTableNameAsMorphClass { public function getMorphClass() { return $this->getTable(); } } 然后我们需要用到关系类型的模型引入它即可...References [1] 多态(Many To Many (Polymorphic)): https://laravel.com/docs/6.x/eloquent-relationships

2.7K10

为什么 Laravel 这么优秀?

接下来我们将尝试构建一个简易的课程系统,在这个系统中有教师(Teacher),学生(Student)和课程(Course),它们之间覆盖了简单的一一、一多等的关系,这在日常开发也很常见。...另一个强大之处在于可以通过 Eloquent 抽象「模型与模型」之间的关系;举个例子,在下面的定义我们描述了一个 Course 可以有多个 Student、一个 Teacher;以及一个 Student...如 Java 的 Spring 会在编译时为 Sprint Container 填充不同的对象,使用时就能向容器获取不同的。...container 设置不同的;如 CacheServiceProvider 会向容器中注册 Cache 对象,后续使用 Cache::get 时就使用的是这里注册的 Cache 对象,注册阶段不应该向容器获取值...Laravel 会自动帮我们从容器获取它,如果容器不存在,则会尝试初始化它。

15310

3分钟短文:Laravel 模型查询数据库的几个关键方法

因为设计的原因,laravel支持的链式操作 本质上方法的返回归属于不同的类。所以使用方法之前务必明确调用的是哪个类的那个方法,返回的是什么类型的数据。...学习时间 让我们最简单的例子开始,就是获取数据库表内所有的条目,返回一个集合。...所以我们推荐使用where语句进行数据库SQL操作,将合适的结果集返回,这样精简了数据库负载, 再者,使用集合的操作方法,结果集进行进一步的格式化,效率会高的。...顺带再说一下聚合函数,使用关系型数据库很大的因素就是其拉取关系型数据很高效, 因此也内置了很多聚合函数用于数据聚合操作。...写在最后 本文主要讲了数据库查询相关的内容,包括获取全量数据,获取单条数据, 分块拉取数据,以及聚合函数等,这些常规操作集合上期讲的查询约束项, 基本上可以涵盖编程的大多数需求了。

2.1K40

Laravel源码分析之模型关联

使用模型关联给应用开发带来的收益我认为有以下几点 主体数据和关联数据之间的关系代码表现上更明显易懂让人一眼就能明白数据间的关系。...开发我们经常遇到的关联大致有三种:一一,一,其中一一是一种特殊的一多关联。我们通过官方文档里的例子来看一下Laravel是怎么定义这两种关联的。... 多关联不同于一一和一多关联它需要一张中间表来记录两端数据的关联关系,官方文档里以用户角色为例子阐述了多关联的使用方法,我们也以这个例子来看一下底层是怎么来定义多关联的。...、关联的模型、父模型中间表的外键名、关联模型中间表的外键名、父模型的主键、关联模型的主键、关联关系名称。...Model 的 get方法获取模型时会预加载的关联模型,获取关联模型时给关系应用约束的 addEagerConstraints方法是具体的关联类定义的,我们可以看下HasMany类的这个方法。

9.5K10

3分钟短文:Laravel 模型一一关联关系这俩啥区别

引言 本期我们把目光投向laravel模型的关联关系上。...hasOne 方法,可以使用 user->phone 返回一个 Phone 模型对象,但是反过来不行, 你不能通过 Phone 获取 User,也就是 要达到这个目的,你需要在 Phone 模型,...举个例子,比如User表,还有一个 Car表,为了简化逻辑关系, 我们假设一个user只有一个car。我们car表内设计一个 user_id 字段,用于存储 user 表的 id 。...return $this->belongsTo('User', 'user_id', 'id'); } } 再说一个一关系示例,比如说一个用户有多个手机号,那么使用 hasMany...return $this->belongsTo('User', 'user_id', 'id'); } } 所以,反向关系无关于原始的一一,或者一,因为数据库表内存储了外键,所以使用这个belongsTo

2.7K20

详解Laravel设置多态关系模型别名的方式

作为 Laravel 的重度使用者肯定都对多态关系不默生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型的关系就是 多态(Many To Many (Polymorphic...我当然会选择 trait 方式来实现,不管定义还是代码耦合度上,使用 trait 来解决这类特性需求都是再适合不过了,如果你 trait 还不太熟悉,可以阅读我之前的文章: 《我所理解的 PHP Trait...》 我们的目标是使用表名来做为关系类别名,那么模型如何获取表名呢,直接使用模型的 getTable 即可,那么整个 trait 的实现如下: app/Traits/UseTableNameAsMorphClass.php...trait UseTableNameAsMorphClass { public function getMorphClass() { return $this- getTable(); } } 然后我们需要用到关系类型的模型引入它即可...总结 以上所述是小编给大家介绍的Laravel设置多态关系模型别名的方式,希望大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家ZaLou.Cn网站的支持!

1.9K21

具有嵌套关系的可重用API资源——Laravel5.5

本文内容主要围绕在 Laravel 5.5 中使用 API 开发的重要步骤,着重介绍如何利用 Laravel 的 API 资源(Resource)和控制器(Controller)进行因素身份验证(MFA...这个命令会 Laravel 官方的存储库中下载最新版本的 Laravel 5.5 代码并安装到名为 "responses" 的文件夹。...也就是 app 目录下的 User.php 文件,你会定义用户和posts之间的关联关系,比如一关系(一个用户有多个posts)或其他关系。· 避免批量赋值app/Post.phpattributeName 的方式访问模型的属性,而不必每次都通过模型实例去获取属性。...这样做有利于避免 N+1 查询问题(获取关联数据时出现的效率问题),同时可以使用单个资源类处理不同的情况。如果关联数据不可用,资源类会忽略它;反之,如果可用,资源类会将其包含在返回的数据

11310

3分钟短文 | Laravel获取关联表指定列的3个方法

今天我们说一说,Laravel,如何关联模型,以及制定返回列,以精简返回数据。 学习时间 假如有两个模型 User 和 Post,一个用户会发布多个post,也就是一的关联关系。...User模型,指定此关系: public function post(){ return $this->hasmany('Post'); } 反过来,Post模型,必然有一个发布者,是一一的映射...如下: public function getAllPosts() { return Post::with('user')->get(); } 这样返回,就可以使用 $post->user...关联关系 我们注意到,关联关系的声明上,第一节仅使用了 belongTo,hasMany 这样的属性,其实还可以链式调用。这样对于所有使用 with 语句关联的模型查询,都会生效。...实际代码,第一种使用闭包修剪SQL语句,用途较为广泛。 第二种方式影响全局,一般不推荐。 第三种则是第一种的变体,但是版本有要求。

2K20

Laravel5.1 框架模型远层一关系实例分析

本文实例讲述了Laravel5.1 框架模型远层一关系。...分享给大家供大家参考,具体如下: 远层一我们可以通过一个例子来充分的了解它: 每一篇文章都肯定有并且只有一个发布者 发布者可以有篇文章,这是一个一关系。...一个发布者可以来自于一个国家 但是一个国家可以有多个发布者,这又是一个一关系,那么 这其中存在一个远层的一多就是”国家和文章的关系”。国家表可以通过发布者表远层关联到文章表。...表添加一列 public function up() { Schema::table('users', function (Blueprint $table) { $table...》 希望本文所述大家基于Laravel框架的PHP程序设计有所帮助。

1.4K20

3分钟短文:说说Laravel模型还算常用的2个“关系

引言 上一章我们介绍了比较简单的laravel模型关联关系的一一,介绍了关联操作方法。...类我们声明了 user() 方法用于关系用户模型, 所以此处链式调用 user 属性,返回的是一个 App\User 对象实例,其包含 User 模型的所有属性, 因此 email 属性也相应返回数据库内的字段...一关系 还有一个常见的关联关系是一。比如一个用户有多个手机号,一种状态包含很多个事件,一个商品有多个标签等等等等, 这都是一的常见用法。...我们使用State模型状态有多个Event事件这个场景,演示一下一关系的声明,以及应用。...写在最后 本文不失简单地介绍了belongsTo和hasMany两个关联关系,这在代码仅次于hasOne关系使用的频次比较高的。而效率也就是根据外键查询一次SQL的消耗而已。

2.1K31

使用Entrust扩展包在laravel 实现RBAC的功能

config/auth.php设置合适的,Entrust会使用这些配置来选择相应的用户表和模型类: 'providers' = [ 'users' = [ 'driver' = 'eloquent...然后通过以下命令生成相应的数据表: php artisan migrate 最终会生成4张新表: roles —— 存储角色 permissions —— 存储权限 role_user —— 存储角色与用户之间的关系...permission_role —— 存储角色与权限之间的关系 4、模型类 Role 我们需要创建Role模型类app/Role.php并编辑其内容如下: <?...:User模型添加roles() 、hasRole(name) 、can(permission) 以及ability(roles,permissions, 软删除 使用Entrust提供的迁移命令生成的关联关系默认使用了...如果你由于某种原因不能在数据库中使用级联删除,那么可以EntrustRole 、EntrustPermission 类以及HasRole trait提供的事件监听器手动删除关联表的记录。

6.1K10

还得再来聊聊Laravel模型的一些事

前言 之前,文章:https://www.misiyu.cn/article/58.html 已经发过关于Laravel关系了。 但回过头来,过了个把月再去看,我自己都忘了怎么写了。...目前需求是信息表里面的多个信息可能同属于来源表的一条记录。 同样,来源表的多条信息可能属于信心表的一条记录。 简言之就是,这是关系。 细节 新建迁移文件就不说了。...2、第三张表的命名有要求,主要是Laravel默认情况的关系。...); $id = $ref->id; 2、假设我们信息表(netDisks)插入了一条记录,得到一个model: $model = NetDisk::create(['xx'=>$xx]); 那么我们可以使用以下语句建立关系...: 说白了,这个建立关系就是第三张表新增记录 $model->attach([$id]); 所以有几点说明: 1、attach()传入的是id,可以是多个id【数组】。

1.6K00

laravel5.6框架操作数据curd写法(查询构建器)实例分析

(获取多行列) $data = DB::table('users')- get(); //first() 方法将会返回单个对象(获取一行一列) //where() 方法查询指定条件对象 $data =...select() 方法可以查询指定自定义字段 $data = DB::table('users')- select('id','name', 'email')- get(); //value() 方法结果获取单个...,建议where查询使用这个方法 $data = DB::table('users') - where([ ['id', ' =', 1], ['name', 'like', '测试%'] ]) -...mysql5.7以后,默认开启group by的严格模式。 解决方法:找到config/database​.php mysql下面把’strict’ = true,改为false。...》及《php常见数据库操作技巧汇总》 希望本文所述大家基于Laravel框架的PHP程序设计有所帮助。

2.2K30

Php Laravel框架 多表关系处理 之 Eloquent一关系处理

Php Laravel框架 多表关系处理 之 Eloquent一关系处理 本博文主要介绍 Laravel 框架 Eloquent 对一关系的处理以及 Laravel Administrator...Laravel 提供了四种类型的关系: –一一 –一 – 多态关系 一个一关系的样例是一篇博客文章有很多评论或者一个课程有的多次分数信息等。...* 而且是一关系 */ public function StuInfo(){ return $this -> belongsTo...表与表之间的一关系已确立, 以下将介绍Laravel Administrato 后台中的实现 下拉列表查询、绑定等应用 <?...演示样例多次使用到 “学生姓名”、“课程名”,尽管他们存储不同的表,但因为我们之前 Model已建立了它们之间的 一关系,因此我们能够自由搭配组合 效果图例如以下: 10个Laravel4

2.1K40
领券