首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

orm 系列 之 Eloquent演化历程2

数据库管理相关代码都放在Schema目录下, 最开始结构如下: src/Illuminate/Database/Schema ├── Blueprint.php └── Builder.php 就两个文件...Blueprint和Builder,Schema/Builder负责提供数据库操作面向对象似的操作,而Schema/Blueprint则负责存储具体操作数据,包括数据库操作命令和数据库表定义,因此有下面的结构...:包含了最基本Sql操作和语法逻辑,类似于自定义了一个DSL语言,提供了面向对象操作方式 Schema:这也是本篇讲migrations or database modification logic...本文最后讲下Eloquent中新增对象之间关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...依赖PHP_FIG建议,框架组件独立开发并命名为Illuminate,再提供Starter Package让框架使用者可以透过composer建立项目,因此我们从eloquent-v4.0.0开始,

2.4K30

Laravel 学习笔记5.3之 Query Builder 源码解析(下)

实际上,上一篇聊到了\Illuminate\Database\Query\Builder这个非常重要,这个含有三个主要武器:MySqlConnection, MySqlGrammar, MySqlProcessor...所以这里可看出Query Builder是在PHP PDO基础上实现一层封装,使得用更加面向对象Fluent API来操作数据库,而不需要写一行SQL语句。...OK, 总的来说,通过了解Query Builder实现原理后,知道其并不复杂或神秘,只是一个对PDO更友好封装包裹,Query Builder有几个重要或概念:连接MySqlConnection...OK, illuminate/database package不仅提供了Query Builder,还提供了Eloquent ORM。...以后再聊Eloquent ORM实现原理吧。 总结:本文主要学习了Query Builder编译SQL细节和执行SQL逻辑。后续在分享下Eloquent ORM实现原理,到时见。

1.3K51

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

laravel/framework/src/Illuminate/Database/Eloquent/Collection.php 对象,然后这个对象里面有个 items 属性,是一个数组。...在所有模型都要继承 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 中,我们很快就能发现一个 query() 静态方法。...不过这里需要注意是,模型默认生成 QueryBuilder 是 llaravel/framework/src/Illuminate/Database/Eloquent/Builder.php 对象,...而不是我们之前 查询构造器 中 laravel/framework/src/Illuminate/Database/Query/Builder.php 对象。...但 Eloquent\Builder 内部持有的一个query 属性依然是 Query\Builder 对象,也就是说在底层,它依然是调用我们熟悉那个 查询构造器 来进行工作

2.8K20

Laravel框架关键技术解析

Laravel示例(Illuminate\Database\Eloquent\Model.php) 2.魔术常量:__LINE__、__FILE__、__DIR__、__FUNCTION__、__CLASS...,在实例化对象时,static会根据运行时调用来决定实例化对象,而self是根据所在位置来决定实例化对象 4.Laravel示例:Illuminate\Database\Eloquent\Model.php...四是数据库连接创建阶段,\Illuminate\Database\Connectors\ConnectionFactory 4.查询构造器(\Illuminate\Database\Query\Builder...\Grammars SQL语句执行阶段,Illuminate\Database\Connection C.Eloquent ORM 1.两个阶段 Eloquent ORM查询构造器生成,Illuminate...\Database\Eloquent\Model::newQuery() 操作命令执行,Illuminate\Database\Eloquent\Builder 2.ORM映射最大好处是数据表结构映射成一个对象

11.9K20

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

我们将那些需要在多处调用查询条件编写过滤器,然后调用查询代码地方改为调用过滤器,调用过滤器比编写那些冗长而重复查询方法更加便捷,可读性也更好。...通过全局作用域实现 要实现「全局作用域」,首先需要编写一个实现 Illuminate\Database\Eloquent\Scope 接口全局作用域,这里我们将其命名为 EmailVerifiedAtScope...php namespace App\Scopes; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent...\Model; use Illuminate\Database\Eloquent\Scope; class EmailVerifiedAtScope implements Scope { public...你可以在这里进行一些模型初始化操作。 这样,就可以刚刚编写全局过滤器应用到 User 模型上。如果有多个全局作用域,可以多次调用 static::addGlobalScope 方法来注册。

2.5K20

Laravel5.3之Query Builder源码解析(上)

在看下Query Builder源码之前,先大概探索下illuminate/database package目录结构。...该文件夹内包含就是Eloquent主要实现,如重点ModelBuilder,Relations子文件夹内包含关系。...是核心组件,也是最多文件夹 Events 装载事件文件夹 Migrations 实际执行migrate相关命令 Query Query Builder代码主要在这个文件夹,主要Builder...,还包括Grammars和Processors两大类别,根据四个不同DB分门别 Schema 是设计database主要参与,主要Builder和Blueprint,还有Grammars...Mysql连接 return $this->factory->make($config, $name); } 实际上最后还是通过\Illuminate\Database

94221
领券