模型Eloquent ORM的使用(二) 对于模型的探索我们还将继续。上篇文章中,只是简单地通过模型操作了一下数据库,并且学习了一下关联操作的知识。...laravel/framework/src/Illuminate/Database/Eloquent/Collection.php 对象,然后这个对象里面有个 items 属性,是一个数组。...在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类中,我们很快就能发现一个 query() 静态方法。...但是,这里划重点了,Eloquent\Builder 中有些方法是没有的,比如说 insert()、insertGetId() ,在模型中,使用 save() 就可以代替这两个方法的操作。...参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406
this->child->{模型Eloquent ORM的使用(一) 先来说说 ORM 是什么,不知道有没有不清楚这个概念的小伙伴,反正这里就一道科普一下算了。...其实,Laravel 中的 Eloquent ORM 也是 Active Record 的实现,这也是现在 ORM 的主流。...然后,在这个抽象类中,使用了一个 laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php 特性,...等等,不对呀,我们在模型里面定义的是一个 gender() 方法,怎么在外面使用的是一个属性?别急,我们再来看看源码,看看框架中是如何把调用属性变成调用一个方法的。...参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406
今天我们将在定义好模型关联的基础上进行关联查询、插入和更新操作,看看如何借助模型关联提高代码的可读性并提高编码效率。...: 底层对应的是一个 EXISTS 查询: select * from `users` where exists ( select * from `...: 这个功能用于不考虑性能的场景进行快速查询还是很方便的,但如果对性能有较高要求,则不推荐使用,毕竟是要执行多次查询才能逐个统计出来。...这样,我们就不需要在每个地方去判断如果文章作者信息为空该如何处理了,因为这种情况下返回的也是一个正常的 User 模型实例。...希望你看完学院君的这一系列教程可以了解并完全掌握 Eloquent 模型的定义和使用,有什么问题,欢迎随时与我交流。
Laravel 使用 Scout 实现全文检索 为何要采用全文检索 一个字块,可以秒级、毫秒级搜索出你搜索的内容 最原先我们可以简单的通过查询语句实现检索条件 比如: select * from table...where name like '%张三%'; 再或者搜索更多字段 select * from table where title like '%php&' or content like '%laravel...即使你在数据库中添加了索引,还是不尽人意 因此需要一个更快、更快、更快的数据查询,而 Laravel 的 scout 就是专门为搜索来解决难题的 简介 Laravel Scout 为 Eloquent...通过使用模型观察者, Scout 会自动同步 Eloquent 记录的搜索索引。 目前, Scout 自带一个 Algolia 驱动。...php namespace App\Models; use Laravel\Scout\Searchable; use Illuminate\Database\Eloquent\Model; class
问题引出 在通过 Eloquent 模型实现增删改查这篇教程中,我们已经学习了如何在 Eloquent 模型类中进行各种查询,但是这些查询大多需要手动调用查询构建器提供的各种方法来实现。...接下来,我们就来演示如何在 Eloquent 模型类上使用「作用域」进行查询。...); 对应的 SQL 语句如下: select * from `posts` where `status` = ?...推荐使用这种方式来构建需要在多个场景调用的复杂 Eloquent 查询。 移除局部作用域很简单,不要在查询中指定对应的过滤器方法即可。...本系列教程首发在Laravel学院(laravelacademy.org)
DB_USERNAME=root DB_PASSWORD=root 修改完.env文件需要重启服务 [laravel] laravel的数据库入门 控制器中导入DB数据库操作类,use DB 使用DB类的静态方法...select来查询数据库,DB::select(),参数:sql语句,参数值数组 例如:$user=DB::select("select * from article where id=?"...,array("1")); 获取到一个数组,数组中的每一个结果是一个StdClass对象 使用DB::table(),得到查询构造器对象,参数:表名 调用Builder对象的get()方法,得到数组数据 例如:$users=DB::table("article")->get(); 查询构造器是链式调用的...[laravel] Eloquent模型 使用Eloquent模型为表建立映射模型ORM,使用Artisan命令 make:model 模型名称 例如:php artisan make:model User
中文文档: http://laravel-china.org/docs/eloquent#relationships 下面我们开始一个一个地学习。...---- 这段代码除了展示了一对一关系该如何使用之外,还传达了三点信息,也是我对于大家使用 Eloquent 时候的建议: 1....) { return $this->hasMany('Pay', 'user_id', 'id'); } } 然后,当我们需要用到这种关系的时候,该如何使用呢?...我们可以使用一个重要的特性,关系预载入:http://laravel-china.org/docs/eloquent#eager-loading 直接上代码: $users = User::with('...---- 至此,深入理解 Laravel Eloquent 系列文章到此结束。推荐继续了解 软删除 、转换成数组/JSON。 END
. ---- 之前完全忘了要把这个 Laravel 5 的系列博客写完,不过最近看到了一篇关于属性转换的简介 Laravel 5 Eloquent Attribute Casting is Awesome...这意味着假如你的数据是以特定的格式存储在数据库中,而你在使用时需要的是另外一种格式,现在你可以配置 Eloquent 模型自动完成两种格式之间的转换工作。 为什么要这样做?...它是如何实现的? 要应用属性转换这个功能,你需要在你的模型中添加一个 protected $casts 的数组变量。...这个数组变量 $casts 的作用就是告诉 Eloquent:“每次当我访问这个模型中的 is_admin 属性的时候,返回一个类型为 boolean 的值给我”。...都是用把序列化为 JSON 格式数组的数据转换(反序列化)并返回。
使用 Like 关键字 如何实现模糊查询呢?即实现 MySQL 的 LIKE 查询。Eloquent 提供了比 where 语句更加灵活的模糊查询功能。...但是如果我们的 JSON 数据存在 大小写字符 的情况,又该如何处理呢?这种场景最适合使用 whereRaw 方法,先来看看示例,再来讲解它工作原理: Laravel 如何使用这个功能。 返回的结果集即会包含完全匹配的数据,也会包含发音近似的数据。 总结 Laravel 为我们提供了简单实用的查询功能。...我们可以在 Laravel 里使用 where 语句,可以使用原生 SQL 语句,甚至可以使用模糊查询和相似查询,所有这些查询功能都是 Laravel 内置提供的开箱即用,非常赞!
up前面玩了 DB 查询,但是laravel开发基本不怎么使用db方式查询,应该有更强大的 模型 Model 介绍 Laravel 的 Eloquent ORM 提供了一个漂亮、简洁的 ActiveRecord...laravel 的 Model 使用先进的 Eloquent ORM 但也有优缺点 优点是数据库的操作变的简单安全 缺点也明显数据库的操作变的缓慢笨重 Eloquent ORM 作为 laravel 中亮点...使用的是单数形式帕斯卡命名法 ,也就是首字母大写的驼峰命名法 比如 up之前创建的 test表 Model 命名就是 Test.php 但是呢, laravel 都能 用命令创建控制器生成表跟数据填充了...和使用了 DB 取出来的数据一样的是都是一个 Collection 集合,不一样的是 DB 取出来的是数组,Model 取出来的是一个类,需要一层一层的剥开点到 attributes 我们才能看到数据...但是有点写法可能不太明白这种类名跟一个变量直接当参数传给方法的 function index(Test $testMdl) laravel 中大量使用了这种方法,百度了下才知道这个东西叫做 依赖注入 。
, ['abcd',23]); 3.1.2 查询数据 (返回array 所有查询结果) $result = DB::select('select * from student where id < ?..., ['abcd']); laraevl内置函数dd,可人性化的打印数组:dd($result); 3.2 数据库操作 - 查询构造器 3.2.1 查询构造器简介 Laravel 查询构造器(query...- 指定要查询的字段 DB::table("表名")->select("id","name")->get(); 结果分块:如果你需要操作数千条数据库记录,可以考虑使用 chunk 方法。...//返回指定字段数据 3.3 Eloquent ORM ?...(); dd($result); 3.3 Eloquent ORM 修改数据 通过模型更新数据 (最后返回bool类型,单条数据是否修改成功) $student = Student::find(1051
引言 今天说一个细分的需求,在模型中,或者使用laravel提供的 Eloquent ORM 功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写? 本文通过几个例子,为大家梳理一下。...学习时间 假设有一个模型 Reservation,我们查询某个日期的预订条目数,首先构造日期字符串,使用内置函数: $now = date('Y-m-d'); 返回当前日期。...如何实现在 from 和 to 之间的日期呢,类似下面这样: SELECT * FROM table_name WHERE reservation_from BETWEEN '$from' AND '$...to 在laravel中你可以使用 whereBetween 这个查询子句。...当然了,上面的方法是在SQL中直接进行筛选,如果查询结果限制的条目本身比较少,也能充分利用索引,所以不担心查询的速度,那么我们可以在查询完成后,在返回的 Eloquent Collection 集合上,
在Laravel中,视图可以使用Blade模板引擎来渲染。...以下是一个简单的视图示例,用于显示用户列表:@foreach ($users as $user) {{ $user->name }}@endforeach在这个示例中,Blade语法被用于循环遍历$user数组中的每个用户...五、数据库操作Laravel内置了Eloquent ORM(Object-Relational Mapping)用于数据库操作。...使用Eloquent进行数据查询:// 查询所有用户$users = User::all();// 查询单个用户$user = User::find(1);// 查询符合条件的用户$users = User...::where('age', '>', 18)->get();在这个示例中,我们使用Eloquent提供的方法来查询users表中的数据。
Laravel提供的 eloquent orm 使用面向对象的方式封装了PDO数据库操作,使用起来非常方便,对于复杂的SQL操作也游刃有余。...首先,你完全不必把每个条件都使用where链式调用,可以把查询条件放在一个 array 数组内,整体传入where子句。 ? 这样把拼装where子句的工作,提前到查询数组的操作上,就更加灵活了。...比如声明 and 连接的查询条件数组: $matchThese = ['field' => 'value', 'another_field' => 'another_value', ...]; 使用 or...那么使用 User::all() 方法构造查询时,生成的sql语句中会追加 AgeScope 设置的查询约束条件: select * from `users` where `age` > 200 实现本地作用域...就是在对应的 Eloquent 模型方法前添加 scope 前缀,在模型中构造如下的作用域方法: ?
下面以添加角色为例加以说明 #后台处理 /** * 添加处理 * * @param \Illuminate\Http\Req...
「ActiveRecord」是 ORM 的一种实现模式,Eloquent 则是 Laravel 版的「ActiveRecord」。...', '>', 0)->select('id', 'title', 'content')->get(); 对应查询结果如下: ?...提供的 destroy 方法一次删除多条记录,通过数组传递多个主键 ID 即可: Post::destroy([1,2,3]); 当然,你也可以通过查询构建器的方式删除指定记录: $user = User...中的应用,最后还给大家演示了如何通过 Eloquent 实现数据库的增删改查,当然,Eloquent 的功能远不仅如此,还支持很多强大的功能,比如批量赋值、软删除、查询作用域设置、模型事件、关联关系等...本系列教程首发在Laravel学院(laravelacademy.org)
ORM 两种最常见的实现方式是 Active Record 和 Data Mapper,Active Record 尤其流行,在很多框架中都能看到它的身影,比如 Laravel 框架使用的 Eloquent...这里,我们选择使用更加简单的 Active Record 模式来实现 ORM 模型类,并且为了简化流程,我们直接基于 Laravel 框架的 Eloquent ORM 组件来编写,就不再重复造轮子了。...下载 Eloquent ORM 相关扩展包 Eloquent ORM 作为 Laravel 框架自带的 ORM 实现,还可以在 Laravel 框架之外作为独立的 ORM 组件使用。...进入 vendor/illuminate/database,可以通过阅读 README.md 文件查看如何使用独立的 Eloquent ORM 组件,接下来,我们将参照这个文档介绍来编写博客项目的模型类实现...模型类全局可用(为了编写 Eloquent 模型类,如果只是使用 Laravel 提供的数据库查询构建器功能,则不需要这些操作)。
events WHERE `published` = 1; 如果条件 published = 1 在默认的情况下需要开启,我们可以使用laravel模型的 全局作用域 方式为所有查询追加上这个条件。...在模型文件 Event 内头部引入下述类: use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder...不过就是QueryBuilder的一个属性数组的一个元素而已,手动移除就行了,这样特例问题就解决了。...', 1); } 只需要声明一个以 scope 为首的小驼峰命名的函数方法即可,并返回一个 QueryBuilder 对象实例。...既然本地作用域返回的是 QueryBuilder 实例,那么自然就可以链式调用本地作用域的方法,和 QueryBuilder 的方法。
作为 Laravel 的重度使用者肯定都对多态关系不陌生,以官方文档为例,文章有标签,视频有标签,那么文章和视频这些模型与标签模型的关系就是多态多对多(Many To Many (Polymorphic...))[1] 如果我们给 ID 为 1 的文章打上两个标签,数据库标签关系表的的存储结果就是这样子: > select * from taggables; +--------+-------------+...'App\Post', 'videos' => 'App\Video', ]); https://laravel.com/docs/6.x/eloquent-relationships#custom-polymorphic-types...》[2] 我们的目标是使用表名来做为关系类别名,那么在模型中如何获取表名呢,直接使用模型的 getTable 即可,那么整个 trait 的实现如下: app/Traits/UseTableNameAsMorphClass.php...References [1] 多态多对多(Many To Many (Polymorphic)): https://laravel.com/docs/6.x/eloquent-relationships