使用Eloquent [‘eləkwənt] 时,数据库查询构造器的方法对模型类也是也用的,使用上只是省略了DB::table('表名')部分。...= App\Flight::where('legs', '>', 100)->firstOrFail(); 如果没有捕获这个异常的话,laravel会自动返回给用户一个404的响应结果,因此如果希望找不到的时候返回...limit = 20; $page = 1; return Enterprise::paginate($limit, ['*'], 'page', $page); 插入 基本插入操作 插入新的数据只需要创建一个新的模型实例...// 使用属性检索flight,如果不存在则创建......$flight = App\Flight::firstOrCreate(['name' => 'Flight 10']); // 使用属性检索flight,如果不存在则创建一个模型实例...
模型Eloquent ORM的使用(二) 对于模型的探索我们还将继续。上篇文章中,只是简单地通过模型操作了一下数据库,并且学习了一下关联操作的知识。...这个对象就是我们的模型组件中的集合对象,它包含很多集合操作的方法,如果以最简单的角度理解的话,其实它就是帮我们封装了很多数组操作函数。 这个集合对象有什么作用呢?...\Models\MTest $mTest){ dump($mTest); dump($mTest->name); }); 通过在回调函数中注入模型对象,就可以实现路由与模型的绑定。...getConnection() 会返回一个之前讲过的工厂方法创建的 Connection 对象,而 query() 方法则会根据 Connection 创建一个 QueryBuilder 对象。...最主要的还是那句话,看框架真的就是在考验你的基础水平,找不到方法了怎么办?找 __call() 或者 __callStatic() ;找不到属性了怎么办?
: $flight = App\Flight::find(1); $flight->name = 'New Flight Name'; $flight->save(); 格式: Eloquent...save 方法也可用于模型更新。更新模型时,需要检索到它,然后设置模型属性,再调用 save 方法。...它接受一个属性数组,同时会创建模型并插入到数据库中。...还有, save 方法和 create 方法的不同之处在于, save 方法接受一个完整的 Eloquent 模型实例,而 create 则接受普通的 PHP 数组: $post = App\Post:...格式:create(【‘字段’=>值,组成的数组】); 参考连接: https://learnku.com/docs/laravel/5.6/eloquent-relationships/1404#3d967c
一个 Eloquent 模型类映射一张数据表,通过模型类提供的方法,你可以获取其映射的数据表的所有记录,也可以获取单条记录,还可以创建、更新和删除对应数据表记录,而这一切都不需要你编写任何 SQL 语句...结合我们平时怎么创建使用模型类的,就可以更好的理解这一理念了。...比如我们前面几篇教程中用到的 User 模型和 Post 模型都是这样,要创建一个模型类,需要使用 make:model 命令: php artisan make:model Post 注:如果对应的数据表尚未创建...,你还可以在创建模型类的同时创建对应的数据库迁移文件,通过 php artisan make:model Post -m 即可。...获取聚合结果 Eloquent 模型类同样支持 count、sum、avg、max、min 等聚合函数查询: $num = User::whereNotNull('email_verified_at')
{task},然后默认以参数值作为资源 ID 在底层通过 Eloquent 查询获取对应模型实例,并将结果传递到闭包函数或控制器方法中。...路由模型绑定默认将传入 {task} 参数值作为模型主键 ID 进行 Eloquent 查询,你也可以自定义查询字段,这可以通过在模型类中重写 getRouteKeyName() 来实现: 模型 ID ,然后从对应模型类 Task 中获取相应的模型实例并传递给闭包函数或控制器方法: Route...2、兜底路由 在 Laravel 5.6 中,引入了兜底路由功能。...3、频率限制 在 Laravel 5.6 中,还引入了频率限制功能。
在Laravel中已经具有了一套高级的PHP ActiveRecord实现 — Eloquent ORM。...Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。...Laravel 所遵循的MVC模型架构 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑...在进行安装之前,确保你已经有了Web环境(Nginx/Apache + PHP7.2及以上版本 + Mysql5.6以上版本) 执行Composer命令: composer global require...laravel/installer 安装完成后, laravel new 命令会在你指定的目录创建一个全新的 Laravel 项目。
创建一个模型类非常简单,只用继承系统的模型就可以了: use Illuminate\Database\Eloquent\Model; class Contact extends Model {} 因为遵循的是约定大于配置的惯例...,就是 findOrFail,如果找到就返回一个模型,找不到就返回默认错误页面。...创建模型 除了上面我们使用手动创建模型文件之外,laravel还为我们提供了命令行方式快捷创建。...Illuminate\Database\Eloquent\Model; class Contact extends Model { // } 如果数据库表还没有创建,你想要把迁移文件的骨架代码也生成出来...写在最后 本文通过演示laravel框架模型创建,以及通过演示默认配置项到自定义配置内容, 为大家展示了Model所具备的一些很赞的特性。
版本 发布时间 Bug 修复截止时间 安全修复截止时间 5.5 (LTS) 2017 年 8 月 30 日 2019 年 8 月 30 日 2020 年 8 月 30 日 5.6 2018 年 2 月...你可能对 Laravel 已有的 Illuminate\Support\Str 这个类比较熟悉,它提供了各种有用的字符串操作函数。...基于这些函数, Laravel 7 现在提供了一个更加面向对象的、更加流畅的字符串操作库。你可以使用 Str::of 方法创建一个 Illuminate\Support\Stringable 对象。...路由模型绑定优化 路由模型绑定优化由 Taylor Otwell 开发贡献 。 自定义键名 有时你可能希望使用 id 以外的字段来解析 Eloquent 模型。...模型时,可能希望对第二个 Eloquent 模型进行约束,使其必须是第一个 Eloquent 模型的子类。
laravel 5.6 新特性 Laravel 5.6 已正式发布,该版本在 Laravel 5.5 的基础上继续进行优化,包括日志系统、单机任务调度、模型序列化优化、动态频率限制、广播频道类、API...资源控制器生成、Eloquent 日期格式化优化、Blade 组件别名、Argon2 密码哈希支持、引入 Collision 扩展包等等等等。
引言 本期继续我们的laravel学习,主要说一说laravel使用eloquent orm 模型 读取数据库条目的几个常用方法。 ?...eloquent门面为我们提供了很多好用的链式操作方法, 在query builder筛选出合适的条目后,返回一个eloquent collection,或者是一个 基类的collection对象,可以直接使用集合的方法操作数据集...对于web应用,可以简单地使用前几期我们使用的 firstOrFail 方法,便捷地去除第一个条目, 或者找不到的时候,抛出异常。...顺带再说一下聚合函数,使用关系型数据库很大的因素就是其拉取关系型数据很高效, 因此也内置了很多聚合函数用于数据聚合操作。...写在最后 本文主要讲了数据库查询相关的内容,包括获取全量数据,获取单条数据, 分块拉取数据,以及聚合函数等,这些常规操作集合上期讲的查询约束项, 基本上可以涵盖编程中的大多数需求了。
new AgeScope); } } 添加全局作用域之后,User::all()操作将会产生如下等价sql select * from users where age > 200 也可以使用匿名函数添加全局约束...Mutators 在Eloquent模型中,Accessor和Mutator可以用来对模型的属性进行处理,比如我们希望存储到表中的密码字段要经过加密才行,我们可以使用Laravel的加密工具自动的对它进行加密...Accessors & Mutators accessors 要定义一个accessor,需要在模型中创建一个名称为getXxxAttribute的方法,其中的Xxx是驼峰命名法的字段名。...); } } 在访问的时候,只需要正常的访问属性就可以 $user = App\User::find(1); $firstName = $user->first_name; mutators 创建...mutators与accessorsl类似,创建名为setXxxAttribute的方法即可 <?
负责提供数据库操作的面向对象似的操作,而Schema/Blueprint则负责存储具体的操作数据,包括数据库操作的命令和数据库表的定义,因此有下面的结构: 接着,我们看看是怎么使用Blueprint的,下看创建...本文最后讲下Eloquent中新增的对象之间的关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...commentable_id列对应 Post 或Video 的 ID 值,而 commentable_type 列对应所属模型的类名。...当访问 commentable 关联时,ORM 根据commentable_type 字段来判断所属模型的类型并返回相应模型实例。...模型结构 接下来,让我们看看构建这种关联关系需要在模型中定义什么: <?
代码时间 laravel系统的基类就是 Illuminate\Support\Collection,同时提供了一个快捷助手函数collect 用于实例化一个集合类。...该助手函数的代码很简单,就是new一个对象: new Collection($value); 比如有一个数组,将其实例化为一个集合类: $collection = collect([1, 2, 3]);...虽然eloquent collection继承了基类Collection的特性,但是对于模型类的特性 有许多独特的方法。比如 modelKeys() 返回所有集合模型的primary key。...比如调用 find($id) 的方法返回的是根据模型实例的primary id查找到的模型对象。 这与原始的集合的方法都有着本质的不同。...比如在订单模型内,把所有已经支付的订单进行求和返回。我们手动创建一个eloquent collection 用于操作query builder返回的数据集合。
} 当访问 http://test.com/users/1 时,控制器对应的变量名$user会匹配路由片段中的{user},这样,Laravel 会自动注入与请求 URI 中传入的 ID 对应的用户模型实例...此功能称为 『隐性路由模型绑定』,是『约定优于配置』设计范式的体现,同时满足以下两种情况,此功能即会自动启用: 路由声明时必须使用 Eloquent 模型的单数小写格式来作为路由片段参数,User 对应...控制器方法传参中必须包含对应的 Eloquent 模型类型声明,并且是有序的: 综上,Laravel 将会自动查找 ID 为 1 的用户并赋值到变量 $user 中,如果数据库中找不到对应的模型实例,会自动生成
Eloquent ORM 看起来是一个简单的机制,但是在底层,有很多半隐藏的函数和鲜为人知的方式来实现更多功能。在这篇文章中,我将演示几个小技巧。 1....先执行 X 方法,X 方法执行不成功则执行 Y 方法 Eloquent 有相当一部分函数可以把两个方法结合在一起使用, 例如 『 请先执行 X 方法, X 方法执行不成功则执行 Y 方法 』。...一起来看看在创建模型对象时,你想要生成 UUID 字段 该怎么做。...模型特性:时间、追加等 Eloquent模型有些参数,使用类的属性形式。...创建模型时创建额外的东西 我们都知道Artisan命令: php artisan make:model Company 但是,你知道有三个有用的标记可以为模型生成相关文件吗?
模型 boot() 方法 在Eloquent模型中有一个名为boot()的方法,您可以在其中覆盖默认行为: class User extends Model { public static...模型属性:timestamps, appends等。 Eloquent模型有一些“参数”,以该类的属性形式出现。最受欢迎的可能是这些: ?...命令行创建模型的同时,创建迁移文件和控制器 laravel创建模型的命令大家都很熟悉: php artisan make:model Company 不过你应该了解另外几个很常用的参数: php artisan...make:model Company -mc php artisan make:model Company -mcr php artisan make:model Company -mcrf -m 表示创建模型对应的迁移文件...-c 表示创建模型对应的控制器 -r 表示创建的控制器属于资源控制器 -f 表示创建模型对应的工厂文件 实际上上述几个情况,也可以通过 -a 来实现 php artisan make:model
创建一个模型 创建模型我们可以手动,也可以通过命令行,既然是学习框架,那么我们还是通过命令行来创建一个模型类吧。使用的表依然是之前的表,不过还是改下名字吧,这回表名就叫做 m_test 。...然后,我们就通过命令行创建这个表对应的 模型 类。...; class MTest extends Model { use HasFactory; } 嗯,就这么简单,一个模型类就创建成功了。...对于 Laravel 中标准的 Eloquent 模型类来说,每个表都应该有两个字段,一个是 updated_at ,另一个是 created_at ,分别是两个时间戳字段,用于记录数据的创建时间和修改时间...下篇文章我们还将继续进行模型的学习以及整个模型的源码分析。 参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406
上篇文章我们主要讲了Eloquent Model关于基础的CRUD方法的实现,Eloquent Model中除了基础的CRUD外还有一个很重要的部分叫模型关联,它通过面向对象的方式优雅地把数据表之间的关联关系抽象到了...Relations\HasMany */ public function hasMany($related, $foreignKey = null, $localKey = null) { //创建一个关联表模型的实例...$foreignKey, $localKey ); } /** * 创建一个关联表模型的实例 */ protected function newRelatedInstance($class...Eloquent里把主体数据的Model称为父模型,关联数据的Model称为子模型,为了方便下面所以下文我们用它们来指代主体和关联模型。...*注: 下面的代码为了阅读方便我把一些在父类里定义的方法拿到了HasMany中,自己阅读时如果找不到请去父类中找一下。
学习时间 通常,我们使用助手函数 collect 创建一个集合,其实返回的是 Illuminate\Support\Collection 的一个实例。...而集合 Illuminate\Database\Eloquent\Collection 则是通过 eloquent 方法返回数据时创建的,这很有区别。...因为 Illuminate\Database\Eloquent\Collection 是从 Illuminate\Support\Collection 继承过来的,理所当然,拥有基类所没有的许多特性,比如...find 是在模型中才能调用的集合的方法。 PHP 7 中的类型提示 PHP 7中的新功能是返回类型声明。它可以帮助开发人员查看和检查返回类型是否与期望的返回类型匹配。...由于 Illuminate\Database\Eloquent\Collection 和 Illuminate\Support\Collection 之间的关系,我们可以在函数返回值上显式声明返回类型。
继续介绍 Laravel Eloquent 的小技巧 11....原生查询方法 有时我们需要在Eloquent语句中添加原生查询语句。 幸运的是,它提供了这样的功能。...在生成模型的时候再额外生成一些模板 我们都知道这个的 Artisan 的命令: php artisan make:model Company 但你是否知道它还有三个很有用的参数标记用来生成与这个模型关联的其他文件...php artisan make:model Company -mcr -m 将会创建模型的迁移(migration)文件 -c 将会创建控制器(contriller) -r 将表用这个控制器应该是一个资源控制器...正确的方法稍微有些复杂,需要用到闭包函数作为子查询: $q->where(function ($query) { $query->where('gender', 'Male')
领取专属 10元无门槛券
手把手带您无忧上云