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

laravel 模型Eloquent ORM 查询

up前面玩了 DB 查询,但是laravel开发基本不怎么使用db方式查询,应该有更强大的 模型 Model 介绍 LaravelEloquent ORM 提供了一个漂亮、简洁的 ActiveRecord...每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表的数据,以及在数据表插入新记录。 开始之前,请确保 config/database.php 配置数据库连接。...laravel 的 Model 使用先进的 Eloquent ORM 但也有优缺点 优点是数据库的操作变的简单安全 缺点也明显数据库的操作变的缓慢笨重 Eloquent ORM 作为 laravel 亮点...毕竟是黑科技 改造完成后我们来访问 index 可以看到能正常访问了,这时候我们就通过模型把数据全取出来了 ?...像 get 里面这一长串方法一样,我们查询数据的时候经常会有略微复杂的查询把它们写成一个模型方法 比如说 app/Models/Test.php 文件写一个 getList 方法 <?

4.4K10

Laravel Eloquent 模型关联关系(下)

在前面两篇教程,学院君陆续给大家介绍了 Eloquent 模型类支持的七种关联关系,通过底层提供的关联方法,我们可以快速实现模型间的关联,并且进行关联查询。... Eloquent 模型上进行关联查询主要分为两种方式,一种是懒惰式加载(动态属性),一种是渴求式加载(通过with方法)。...从性能上来说,渴求式加载更优,因为它会提前从数据库一次性查询所有关联数据,而懒惰式加载每次查询动态属性的时候才会去执行查询,会多次连接数据库,性能上差一些(数据库操作主要开销在数据库连接上,所以开发过程如果想优化性能...统计关联模型 我们还可以通过 Eloquent 提供的 withCount 方法不加载关联模型的情况下统计关联结果的数量。...所以不管模型实例有多少个,关联结果只会查询一次,加上模型本身查询总共是两次查询,列表查询时,大大减少了对数据库的连接查询次数,因而有更好的性能表现,推荐使用。

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

Laravel Eloquent 模型关联关系详解(上)

到目前为止,我们介绍的所有 Eloquent 模型操作都是针对单表的,接下来我们将花三篇左右的篇幅来给大家介绍如何在 Eloquent 模型建立模型之间的各种关联关系,以及如何实现关联查询和更新。...,关联关系的建立过程Eloquent 也遵循了「约定大于配置」的原则。...你可能注意到了我们定义关联关系时,仅仅指定了模型类名,并没有指定通过哪些数据表字段建立关联,这并不是说 Laravel 神通广大,能知过去未来之事,而是因为 Eloquent 对此做了默认的约定。...要定义用户文章之间的一对多关联,可以 User 模型通过 Eloquent 底层提供的 hasMany 方法来实现: public function posts() { return $this...接下来,我们 Post 模型定义其与 Tags 模型类的关联关系,通过 Eloquent 提供的 belongsToMany 方法来实现: public function tags() {

9.8K40

laravel 模型Eloquent ORM 添加编辑删除

因为模型默认不允许进行批量赋值需要先定义允许 create 方法插入到数据库的字段,就是给 $fillable 属性定义允许赋值的字段 up 先在模型定义 $fillable 属性 /**...数据中一眼就发现了后三条数据的不同,我们之前用 DB 插入到数据库的数据 created_at 和 updated_at 字段都是空,而我们用模型插入和修改后 created_at 和 updated_at...当时我希望能有一个恢复删除的功能比如说回收站,laravel模型为我们提供了很方便的软删除功能 要启用软删除首先数据表需要有 deleted_at 字段 之前玩迁移的时候简单的说了下创建迁移的时候调用...php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\...Laravel 的 数据库迁移 有创建这个字段的方法 现在,当你模型实例上使用 delete 方法, 当前日期时间会写入 deleted_at 字段。

1.6K21

Laravel Eloquent 模型类中使用作用域进行查询

问题引出 通过 Eloquent 模型实现增删改查这篇教程,我们已经学习了如何在 Eloquent 模型类中进行各种查询,但是这些查询大多需要手动调用查询构建器提供的各种方法来实现。...以 User 模型类为例,我们系统可能只想针对已经验证过邮箱的用户进行操作,没有介绍「作用域」之前,可能你会在应用到处编写这样的代码: $users = User::whereNotNull('...「局部作用域」的实现也比较简单,需要应用它的模型定义一个过滤器方法即可。...动态作用域 此外,Eloquent 模型类还支持「动态作用域」,所谓动态作用域指的是查询过程动态设置预置过滤器的查询条件,动态作用域和局部作用域类似,过滤器方法名同样以 scope 开头,只不过可以通过额外参数指定查询条件...本系列教程首发在Laravel学院(laravelacademy.org)

2.5K20

Laravel系列4.4】模型Eloquent ORM的使用(二)

模型Eloquent ORM的使用(二) 对于模型的探索我们还将继续。上篇文章,只是简单地通过模型操作了一下数据库,并且学习了一下关联操作的知识。...集合操作 其实这个集合操作并不是模型特有的,还记得 查询构造器 ,我们查询列表的时候,总会在最后加一个 toArray() 吗?...而另外一个 map() 函数就不用多说了,之前我们说过,Laravel 的 PDO 默认查询构造器的情况下,走的是 PDO::FETCH_OBJ ,获得的集合结果的每个数据都是一个 stdClass...在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类,我们很快就能发现一个 query() 静态方法。...但是,这里划重点了,Eloquent\Builder 中有些方法是没有的,比如说 insert()、insertGetId() ,模型,使用 save() 就可以代替这两个方法的操作。

2.8K20

Laravel Eloquent 模型类zhon设置访问器和修改器

要定义访问器很简单,相应模型设置对应方法即可。...以上面的 $user->display_name 为例,我们可以 User 模型添加相应的方法 getDisplayNameAttribute(注意这里的转化方式,将小写字母+短划线格式属性转化为驼峰格式方法...我们当然可以通过上述访问器和修改器完成这种操作,但是 Laravel 提供了更加快捷的方法,对于一个在数据库类型为 JSON 或 TEXT 的字段,我们可以模型类中将字段对应属性类型转化设置为数组,...其它操作 Eloquent 模型类还为我们提供了诸如日期修改器、其它属性转化等功能,但是没有高频应用场景,我一般就是用默认日期设置,至于除数组/JSON之外的其它属性转化可以通过良好的数据库设计和业务逻辑来实现...下一篇,我们将基于 Eloquent 模型类实现一些更高阶的功能 —— 查询作用域和模型事件,敬请期待。 本系列教程首发在Laravel学院(laravelacademy.org)

1.4K30

Laravel系列4.3】模型Eloquent ORM的使用(一)

对于 Laravel 中标准的 Eloquent 模型类来说,每个表都应该有两个字段,一个是 updated_at ,另一个是 created_at ,分别是两个时间戳字段,用于记录数据的创建时间和修改时间...如果你的表中有这两个字段的话,那么 Model 操作的过程,你可以忽略这两个字段的操作,Model 系统会自动设置它们。...但是我们今天的演示,不需要这两个字段,所以也可以设置一个属性来关闭 Model 针对它们的自动处理。...当然, Laravel ,可以不在数据库层面进行严格的设置,就可以框架代码实现主外键的关联。...下篇文章我们还将继续进行模型的学习以及整个模型的源码分析。 参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406

8.8K20

深入理解 Laravel Eloquent(三)——模型间关系(关联)

本篇文章,我将跟大家一起学习 Eloquent 中最复杂也是最难理解的部分——模型间关系。...官方英文文档叫 Relationships,个人认为翻译成 “模型间关系” 比现在的 “关联” 更好理解一点哈哈。...一对一关系 顾名思义,这描述的是两个模型之间一对一的关系。这种关系是不需要中间表的。...假如我们有两个模型:User 和 Account,分别对应注册用户和消费者,他们是一对一的关系,那么如果我们要使用 Eloquent 提供的一对一关系方法,表结构应该是这样的: user: id ......---- 这里最难的地方在于后面的两个 foreign_key 和 local_key 的设置,大家可以就此记住: User 类,无论 hasOne 谁,第二个参数都是 `user_id`,第三个参数一般都是

2.6K30

通过 Laravel Eloquent 模型实现批量赋值和软删除

在上一篇教程,我们基于 Eloquent 模型实现了对数据表记录的增删改查操作,今天我们在此基础上介绍两个 Eloquent 模型提供的高级功能 —— 批量赋值和软删除。...作为一个成熟的 ORM 框架,Eloquent 设计之初肯定不会没有考虑到这样的问题,实际上,我们可以借助模型的白名单属性或黑名单属性来解决这个困扰。...实现原理 Eloquent 模型类为我们提供了「软删除」功能的支持。这就意味着, Laravel ,我们不需要编写任何额外代码就可以实现对数据库记录的「软删除」。...如果要在模型类中支持软删除,需要在对应模型类(本例是 Post 模型添加支持软删除的 Trait: <?...这样我们模型类上做所有常规查询操作的时候就会过滤掉被软删除的记录(这些常规查询在上一篇教程已经给出)。

2.3K10

通过 Laravel Eloquent 模型实现简单增删改查操作

默认约定每张表都有 created_at 和 updated_at 字段(迁移类 table->timestamps() 会生成这两个字段),并且保存模型类时会自动维护这两个字段。...数据库连接 Eloquent 模型类默认约定的数据库连接是 config/database.php 配置的默认连接,正如我们连接配置教程中所说的那样,如果应用配置了多个数据库连接,可以通过 $connection...属性为模型类指定使用哪个连接: protected $connection = 'connection_name'; 查询数据 日常开发,大部分操作都是数据库查询数据,Eloquent 模型了为我们提供了很多方法帮助我们从数据库获取数据...$post->views); } } }); 除此之外, Eloquent 模型还可以通过 cursor 方法每次只获取一条查询结果,从而最大限度减少内存消耗: foreach...此外,Eloquent 还为我们提供了一些快捷的插入方法,比如 firstOrCreate 和 firstOrNew,这两个方法都会先尝试通过指定查询条件在数据库查找对应记录,如果没有找到的话,会创建对应模型类的实例

7.9K20

基于独立的 Laravel Eloquent 组件编写 ORM 模型

两者的主要区别是: Active Record 模式模型类与数据表一一对应,一个模型实例对应一行数据表记录,操作模型实例等同于操作表记录; 而在 Data Mapper 模式,业务领域(Domain...下载 Eloquent ORM 相关扩展包 Eloquent ORM 作为 Laravel 框架自带的 ORM 实现,还可以 Laravel 框架之外作为独立的 ORM 组件使用。...Eloquent 提供的模型事件功能,还可以下载 Laravel 提供的独立事件扩展包: composer require illuminate/events 上述扩展包下载完成后,就可以博客项目根目录下的...初始化数据库连接 首先我们 app/bootstrap.php 引入 Eloquent ORM 的 Capsule 类完成数据库连接初始化,在此之前,先在配置文件 config/app.php 调整数据库连接配置符合...模型类全局可用(为了编写 Eloquent 模型类,如果只是使用 Laravel 提供的数据库查询构建器功能,则不需要这些操作)。

1.9K10

Laravel Eloquent分表方法并使用模型关联的实现

众所周知 Laravel 是 PHP 开发项目最优美的框架之一,尤其是 Eloquent 对数据库的操作提供了特别多的便利。...实际开发我们经常涉及到分库分表场景,那么怎样才能继续配合 Eloquent 优雅的使用 Model 模型呢,接下来给大家分享下我实际开发中所遇到的问题。...前面说到书籍越多章节数也就越多解决方案是将章节表分成十个形式为 chapters_0、chapters_1、……chapters_9 表后缀规则是书籍 ID 与 10 取余,这样所有的书籍章节会分散在这 10 个 chapters 。...2、表建好后开始创建 model 模型,按照惯例所有的模型都将写在 App\Models 下;首先我们先创建一个类名为 Model 的模型并继承 Illuminate\Database\Eloquent...{ public function chapters () { /* * books表的id和chapters表的book_id关联 * 一对多关系(一本书对应多条章节

2.2K42

使用laravelEloquent模型如何获取数据库的指定列

使用Laravel的ORM——Eloquent时,时常遇到的一个操作是取模型的其中一些属性,对应的就是在数据库取表的特定列。...,那只需要链式调用select()方法即可: $users = DB::table('users')- select('name', 'email as user_email')- get(); 使用Eloquent...User::select(['name'])- get(); $users = User::select('name')- get(); 直接将列名数组作为参数传入all()/get()/find()等方法...']); $user = User::find($user_id, ['name']); $user = User::where('role', 'admin')- first(['name']); 关联查询中使用同理...以上这篇使用laravelEloquent模型如何获取数据库的指定列就是小编分享给大家的全部内容了,希望能给大家一个参考。

5.6K41

Laravel学习笔记(四)——模型,更安全的数据存取

前言 如果你是一个从没用接触过框架的新手,你进行数据库操作的时候可能会创建数据库链接,然后进行数据操作,最后关闭数据库连接。...而在Laravel模型就相当于一个功能完善的数据库Helper类,不需要用户自己写,只要掌握基本用法就能很快速方便的对数据库进行操作,哪怕你一点不懂SQL语句。...看了接下来的Laravel模型的使用之后你就会爱上LaravelEloquent ORM模型,这也是我直接介绍模型而不讲解其他数据库操作的原因。...Eloquent ORM LaravelEloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。...会默认数据表存在 created_at 和 updated_at 这两个字段。

2K00

Laravel学习笔记(四)——模型,更安全的数据存取

前言 如果你是一个从没用接触过框架的新手,你进行数据库操作的时候可能会创建数据库链接,然后进行数据操作,最后关闭数据库连接。...而在Laravel模型就相当于一个功能完善的数据库Helper类,不需要用户自己写,只要掌握基本用法就能很快速方便的对数据库进行操作,哪怕你一点不懂SQL语句。...看了接下来的Laravel模型的使用之后你就会爱上LaravelEloquent ORM模型,这也是我直接介绍模型而不讲解其他数据库操作的原因。...Eloquent ORM LaravelEloquent ORM 提供了漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。...会默认数据表存在 created_at 和 updated_at 这两个字段。

1.7K00
领券