参考教程:Coding 10编程原动力-Eloquent ORM Laravel 中文文档:Eloquent:关联
胖胖的Eloquent Eloquent采用了ActiveRecord的模式,这也让Eloquent招致了好多批评,让我们去看现在Eloquent/Model.php文件, 该文件已经有3500多行,此时的...Model集成了太多的功能了,一个新人很难短时去理解Model并去很好的使用了,目前Eloquent/Model中主要混合了4个功能: Domain Model(包括了data model和领域逻辑)...耦合的Eloquent\Collection,那怎么解决这个问题呢?...有以下几个方案 让findActivePosts返回�Collection,而不是Eloquent\Collection,避免在Repository之外使用Eloquent相关的功能 通过custom...参考 Separation of Concerns with Laravel’s Eloquent Part 1: An Introduction
up前面玩了 DB 查询,但是laravel开发基本不怎么使用db方式查询,应该有更强大的 模型 Model 介绍 Laravel 的 Eloquent ORM 提供了一个漂亮、简洁的 ActiveRecord...laravel 的 Model 使用先进的 Eloquent ORM 但也有优缺点 优点是数据库的操作变的简单安全 缺点也明显数据库的操作变的缓慢笨重 Eloquent ORM 作为 laravel 中亮点...」的数据库表 两种方式解决 第一种Eloquent中自定义$table,缺点:如果是重构的项目,表名每个Eloquent都要重新定义可就有的哭了 ``` protected $table =...'test'; ``` 第二种添加自定义的Eloquent基类 BaseModel 黑科技可以永绝后患 <?...// } 以后的模型不要直接由 Eloquent 派生,改为由 BaseModel 派生,就不用特殊指定表名,表名与模型名称直接一致,也不再驼峰呀什么的了。
There is only one value in JavaScript that is not equal to itself, and that is N...
Eloquent ORM 本文会是一个Eloquent的使用教程,在此之前,我们先讲述下怎么搭建环境,完整的系列请查看orm 基础环境的搭建 记录下怎么用docker搭建laravel的环境 新建项目composer...create-project --prefer-dist laravel/laravel eloquent 添加laradock cd eloquent;git init;git submodule...通过Eloquent的Scheme Builder构建数据库 通过使用Schema Builder我们可以在设计数据库的时候,不写一行sql,通过Schema Builder,我们可以 creating...总结 本文主要是介绍了使用docker来构建laravel的开发环境,同时,我们也介绍了怎么说会用phpstorm来开发laravel,搭建好环境后,主要介绍了Eloquent的Schema Builder
原文:https://learnku.com/articles/19876#1face4 Eloquent ORM 看起来像一个简单的机制,但在幕后,有很多半隐藏的功能和不太知名的方法来实现更多。...XorY methods Eloquent有很多功能,结合了两种方法,比如“请做X,否则做Y”。...模型 boot() 方法 在Eloquent模型中有一个名为boot()的方法,您可以在其中覆盖默认行为: class User extends Model { public static...Eloquent模型有一些“参数”,以该类的属性形式出现。最受欢迎的可能是这些: ? file ?...gender = 'Female' and age >= 65) 那么怎么转换成Eloquent查询呢?
Eloquent Model以上文讲到的Query Builder为基础提供了Eloquent Builder与数据库进行交互,此外还提供了模型关联优雅地解决了多个数据表之间的关联关系。...加载Eloquent Builder Eloquent Builder是在上文说到的Query Builder的基础上实现的,我们还是通过具体的例子来看,上文用到的: DB::table('user')...Model删除 Eloquent Model的delete操作也是一样, 通过Eloquent Builder去执行数据库连接的Query Builder里的delete方法删除数据库记录: //Eloquent...总结 本文我们详细地看了Eloquent Model是怎么执行CRUD的,就像开头说的Eloquent Model通过Eloquent Builder来完成数据库操作,而Eloquent Builder...Eloquent Model中同样都能使用。
官方文档的 Eloquent 相关部分在这里。 什么是属性转换 转换一个属性值的意思是把它转换成某个特定的数据类型(或者是为了确保它是某个特定的数据类型)。...属性转换是 Eloquent 模型的一个功能特性,这个特性让我们可以赋予 Eloquent 模型中的某个属性转换为一个特定的数据类型。...这意味着假如你的数据是以特定的格式存储在数据库中,而你在使用时需要的是另外一种格式,现在你可以配置 Eloquent 模型自动完成两种格式之间的转换工作。 为什么要这样做?...这个数组变量 $casts 的作用就是告诉 Eloquent:“每次当我访问这个模型中的 is_admin 属性的时候,返回一个类型为 boolean 的值给我”。...写在最后 如你所见, Eloquent 属性转换功能把我们从大量不必要的重复逻辑中解放出来,并且默默地让我们更容易在数据库中存储 JSON 数据。真是好东西!
上一篇介绍了Eloquent的migrations和Scheme Builder功能,本文介绍Eloquent最重要的Model。...查询和聚合 Eloquent提供了丰富的查询方式,通过前面的__call方法分析,我们知道,这些最终调用的都是Eloquent/Builder方法,where方法也不例外,where其最简单的形式如下:...当然这个问题存在了,Eloquent就尝试着去解决了,这就用到了Accessors and mutators,直接看代码: public function getPriceAttribute($value...这个时候Eloquent提供了一个很酷的功能。...以上就是Eloquent的Model操作的基本介绍,下节将会介绍Eloquent的关系。
在前面两篇教程中,学院君陆续给大家介绍了 Eloquent 模型类支持的七种关联关系,通过底层提供的关联方法,我们可以快速实现模型间的关联,并且进行关联查询。...在 Eloquent 模型上进行关联查询主要分为两种方式,一种是懒惰式加载(动态属性),一种是渴求式加载(通过with方法)。...统计关联模型 我们还可以通过 Eloquent 提供的 withCount 方法在不加载关联模型的情况下统计关联结果的数量。...Eloquent 提供了这种同步机制帮助我们更新子模型时触发父模型的更新时间 updated_at 字段值更新,要让该机制生效,需要在子模型中配置 $touches 属性: // 要触发更新的父级关联关系...希望你看完学院君的这一系列教程可以了解并完全掌握 Eloquent 模型的定义和使用,有什么问题,欢迎随时与我交流。
Eloquent Eloquent是laravel中的orm,采取的是active record的设计模式,里面的对象不仅包括领域逻辑,还包括了数据库操作,但是大家平时使用的时候可能没有探究eloquent...是怎么设计的,active record这种模式的优缺点等问题,下面我会带领大家从头开始看看Eloquent是如何设计并实现的。...本文是orm系列的第二篇,也是Eloquent演化的第一篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大的版本的,但是毕竟个人能力有限,不可能分析的非常完善,总会有不懂的地方...到这,我们就分析完了eloquent在f6e2170版本上具有的功能了,到目前为止,eloquent的类图如下: 总结 目前,我们分析到的版本是f6e2170,已经具备了一个orm该需要的功能了,Connection...Eloquent/Builder,同时我们也定义了对象的3种关系,1-1,1-N,N-N,下一阶段,Eloquent将会实现migrations or database modification logic
本文是orm系列的第三篇,也是Eloquent演化的第二篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大的版本的,但是毕竟个人能力有限,不可能分析的非常完善,总会有不懂的地方...以上就是v4.0.0之前的Eloquent的大致功能,目前orm功能已经完善了,数据库迁移功能,Active Record模式的实现,下一步Eloquent的方向是什么呢?...Manager,记得网上搜索过关键字Using Eloquent outside Laravel,我们可以看到一篇Vivek Kumar Bansal写的文章,文章从2方面介绍了怎么使用Eloquent...接着我们看第二个Making a Model,使用上非常简单: //User Model use Illuminate\Database\Eloquent\Model as Eloquent class...总结 从v4.0.0开始,基本Eloquent就已经固定了,到目前最新master分支上,目录结构也没有什么变化了,因此下一篇开始,我们会在最新版的基础上,分析下Eloquent的一些具体的实现,尽情期待
到目前为止,我们介绍的所有 Eloquent 模型操作都是针对单表的,接下来我们将花三篇左右的篇幅来给大家介绍如何在 Eloquent 模型类中建立模型之间的各种关联关系,以及如何实现关联查询和更新。...底层约定 需要指出的是,在关联关系的建立过程中,Eloquent 也遵循了「约定大于配置」的原则。...遵循这种默认的约定,可以帮我们少写很多代码,减少很多额外的配置,所以如果不是迫不得已(比如从其他系统迁移过来),建议你在使用 Eloquent 的话,尽量遵循这些默认约定。...可以,Eloquent 为我们提供了 with 方法,我们将需要查询的关联关系动态属性(关联方法名)传入该方法,并将其链接到 Eloquent 模型原有的查询中,就可以一次完成关联查询,加上模型自身查询...Eloquent 底层约定 可以看到我们在定义多对多关联的时候,也没有指定通过哪些字段进行关联,这同样是遵循 Eloquent 底层默认约定的功劳,belongsToMany 方法签名如下: public
继续介绍 Laravel Eloquent 的小技巧 11....原生查询方法 有时我们需要在Eloquent语句中添加原生查询语句。 幸运的是,它提供了这样的功能。...就是对 DB 查询对象的一个封装,所以可以用在 DB 上的原始查询方法,都可以用在继承自 Eloquent 的 model 对象上。)...用于大表大集合的 Chunk()方法 不完全与Eloquent相关,它更多是Collection 集合类提供的方法,但仍然很强大 —— 处理更大的数据集,你可以将它们分成几块。...正确翻译 SQL 语句中的括号 到 Eloquent 的查询 假设在你的 SQL 查询中 包含了 and / or 这样的关键字,如下: ...
php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\
本文同步至个人博客 需要掌握的 Laravel Eloquent 搜索技术 ,转载请注明出处。 当我们的应用程序访问较少时(例如在项目初期阶段),直接进行项目编码就可以解决大多数问题。...大多数情况下使用 Eloquent 的查询功能就可以完成基本的搜索处理。 预热 搜索功能是应用的重要组成模块。优秀的设计,可以帮助我们的用户简单快速的检索想要的信息。...本文将带领大家学习 MySQL 和 Eloquent 在搜索模块中设计的相关技术。 基本的 Eloquent Where 查询 作为首个要讲解的搜索功能,我们先不涉及新知识点。...['title' => 'foo'], ['published' => true], ])->get(); 如果需要实现类似 ||(或查询) 查询,则可以使用 Eloquent...Eloquent 提供了比 where 语句更加灵活的模糊查询功能。通过在 where 方法中使用通配符,可以实现模糊查询功能。让我们看看 % 通配符: <?
大多数情况下使用 Eloquent 的查询功能就可以完成基本的搜索处理。 预热 搜索功能是应用的重要组成模块。优秀的设计,可以帮助我们的用户简单快速的检索想要的信息。...本文将带领大家学习 MySQL 和 Eloquent 在搜索模块中设计的相关技术。 基本的 Eloquent Where 查询 作为首个要讲解的搜索功能,我们先不涉及新知识点。...['title' => 'foo'], ['published' => true], ])->get(); 如果需要实现类似 ||(或查询) 查询,则可以使用 Eloquent...Eloquent 提供了比 where 语句更加灵活的模糊查询功能。通过在 where 方法中使用通配符,可以实现模糊查询功能。让我们看看 % 通配符: <?...原文: https://pineco.de/basic-eloquent-search-techniques/
你可以通过rollBack方法回滚事务: DB::rollBack(); 最后,你可以通过commit方法提交事务: DB::commit(); 注意:使用DB门面的事务方法还可以用于控制查询构建器和 Eloquent...try{ //中间逻辑代码 DB::commit(); }catch (\Exception $e) { //接收异常处理并回滚 DB::rollBack(); } 以上这篇laravel5 Eloquent
所有 Eloquent 模型都继承自 Illuminate\Database\Eloquent\Model 类。...,你可以在 Eloquent 查询中使用查询构建器的所有方法。...集合 对 Eloquent 中获取多个结果的方法(比如 all 和 get)而言,其返回值是 Illuminate\Database\Eloquent\Collection 的一个实例,Collection...php namespace App\Scopes; use Illuminate\Database\Eloquent\Scope; use Illuminate\Database\Eloquent\...Eloquent查询构建器
快速入门 更换表名 protected $table = 'my_flights'; 更换主键名称 protected $primaryKey = 'id'; 注意: Eloquent 默认主键字段是自增的整型数据...关闭时间戳记录 public $timestamps = false; 获取模型数据 // Eloquent 的 all 方法返回模型表的所有结果 $flights = App\Flight::all(...模型 use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Flight...例如, 你可能想要使用 Laravel 加密器对存储在数据库中的数据进行加密, 并且在 Eloquent 模型中访问时自动进行解密....除了自定义访问器和修改器, Eloquent 还可以自动转换日期字段为 Carbon 实例甚至 将文本转换为 JSON .
领取专属 10元无门槛券
手把手带您无忧上云