首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    orm 系列 之 Eloquent演化历程2

    本文是orm系列的第三篇,也是Eloquent演化的第二篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大的版本的,但是毕竟个人能力有限,不可能分析的非常完善,总会有不懂的地方...数据库管理相关的代码都放在Schema目录下, 最开始的结构如下: src/Illuminate/Database/Schema ├── Blueprint.php └── Builder.php 就两个文件...: 接着,我们看看是怎么使用Blueprint的,下看创建table $grammar = new Illuminate\Database\Schema\Grammars\MySqlGrammar; $...首先是morphMany的构造函数: public function __construct(Builder $query, Model $parent, $morphName) { $this...,再提供Starter Package让框架使用者可以透过composer建立项目,因此我们从eloquent-v4.0.0开始,我们会开始看项目laravel/framework。

    3.5K30

    orm 系列 之 Eloquent演化历程1

    本文是orm系列的第二篇,也是Eloquent演化的第一篇,Eloquent系列会尝试着讲清楚Eloquent是如何一步一步演化到目前功能强大的版本的,但是毕竟个人能力有限,不可能分析的非常完善,总会有不懂的地方...use Illuminate\Database\Query\Builder as BaseBuilder; class Builder extends BaseBuilder { /**...* * @var Illuminate\Database\Eloquent\Model */ protected $model; .... } 里面具体就是在基础...($this->query, $method)) { return call_user_func_array(array($this->query, $method), $parameters...以上就是我们分析的HasOne的实现,其他的关系都类似,此处不再重复,然后eager load的含义是指,当我们要加载多个数据的时候,我们尽可能用一条sql解决,而不是多条sql,具体来说如果我们有多个

    1.6K30

    Laravel框架关键技术解析

    \Database\DatabaseManager 二是数据库连接工厂阶段,\Illuminate\Database\Connectors\ConnectionFactory 三是数据库连接器阶段,\Illuminate...(\Illuminate\Database\Query\Builder)实例封装了数据库连接实例、请求语法实例和结果处理实例,这里类的实例提供了统一的接口方法供查询构造器实例使用 5.查询构造器使用阶段...: SQL语句准备阶段,Illuminate\Database\Query\Grammars SQL语句执行阶段,Illuminate\Database\Connection C.Eloquent ORM...1.两个阶段 Eloquent ORM查询构造器的生成,Illuminate\Database\Eloquent\Model::newQuery() 操作命令的执行,Illuminate\Database...\Eloquent\Builder 2.ORM映射最大的好处是将数据表的结构映射成一个类对象,可以将数据以对象的形式封装使用,程序的编写将变得高效而且结构清晰 3.对于多个表而且表间存在不同的关系时,如果使用不好会严重影响程序的性能

    15.9K20
    领券