前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入研究 Laravel ORM (Laravel Eloquent) 系统 (一) – 概要

深入研究 Laravel ORM (Laravel Eloquent) 系统 (一) – 概要

作者头像
柳公子
发布2018-09-17 16:50:58
5K0
发布2018-09-17 16:50:58
举报
文章被收录于专栏:PhpZendoPhpZendo

本文作为 Laravel ORM 系统的研究开篇,主要对 Laravel ORM 系统的主要功能、依赖的第三方类库、系统的目录结构及对应目录所实现的功能,进行解释说明。 学习完本篇教程,你将会对 Laravel ORM 的结构有个全局观念,并且为后续研究打好基础。

一、Laravel ORM 概要

Illuminate database(Laravel ORM) 组件 在 GitHub 的地址

1.1 Laravel ORM 简介

Illuminate database 提供内置查询语句构造器,Eloquent ORM,表空间(schema)构造器实现 PHP 对数据库操作的 ORM 系统。当前支持 MySQL, Postgres, SQL Server 和 SQLite 四款数据库。此外还提供在 Laravel 框架内使用的数据库抽象层 DB 类。

非但如此,database 组件提供了能在非 Laravel 框架以外的项目使用接口 Capsule 类。

使用方法也很简单:

代码语言:javascript
复制
use Illuminate\Database\Capsule\Manager as Capsule;

$capsule = new Capsule;

$capsule->addConnection([
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => 'password',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
]);

// Set the event dispatcher used by Eloquent models... (optional)
use Illuminate\Events\Dispatcher;
use Illuminate\Container\Container;
$capsule->setEventDispatcher(new Dispatcher(new Container));

// Make this Capsule instance available globally via static methods... (optional)
$capsule->setAsGlobal();

// Setup the Eloquent ORM... (optional; unless you've used setEventDispatcher())
$capsule->bootEloquent();

1.2 Laravel ORM 的依赖组件

通过项目 composer.json 配置文件我们可以看到,本项目依赖的其它组件有:

1.3 Laravel ORM 下载安装

代码语言:javascript
复制
git clone [email protected]:illuminate/database.git

composer install

1.4 Laravel ORM 目录结构

代码语言:javascript
复制
|---- vendor
  |---- composer             composer 包管理生成的自动加载文件
  |---- doctrine             单复数转换器组件
  |---- illuminate           Laravel ORM 系统
    |---- container          Laravel 容器组件
    |---- contracts          Laravel 契约组件
    |---- database           ORM 组件
    |---- support            Laravel 辅助组件
  |---- nesbot               Carbon 日期处理组件
  |---- paragonine           随机字符生成组件
  |---- symfony

|---- composer.json composer 包管理配置文件

本系列重点解析 illuminate/database Laravel ORM 组件的分析,仅当有设计到其它组件时再做相关分析。

二、 Laravel ORM 核心组件目录结构

前面我们大致了解了 Laravel ORM 系统整体的目录结构,本节我们重点走进 illuminate/database 文件夹,即 Laravel ORM 核心

2.1 文件结构

代码语言:javascript
复制
|---- database
  |---- Capsule                         文件夹提供非 Laravel 框架以外的系统使用 Laravel ORM 组件的数据库类(Manager.php)
  |---- Concerns                        @TODO
  |---- Connectors                      实现四种数据库的库连接实现类
  |---- Console                         定义 Laravel 数据库迁移(migrate)等相关命令行工具类 
  |---- Eloquent                        ORM 系统实现
  |---- Events                          ORM 处理过程中的事件接口定义
  |---- Migrations                      定义数据库迁移命令行工具对应的数据迁移实现类
  |---- Query                           ORM 查询构造器实现
  |---- Schema                          表空间构造器实现

  |---- ConnectionInterface.php         数据库连接接口,完成数据库连接操作、CURD 、事务等接口方法定义
  |---- Connection.php                  继承自 ConnectionInterface 接口,实现通过 PDO 数据库连接操作,构建数据库查询构造器实例、SQL 语法
                                        解析器实例,实现 CURD、事务、数据绑定处理等操作。

  |---- ConnectionResolverInterface.php @TODO
  |---- ConnectionResolver.php          @TODO

  |---- DatabaseManager.php             供 DatabaseServiceProvider 服务器提供者使用的数据库管理器,功能是管理不同数据库驱动(MySql、Postgres...)的连接实例
  |---- DatabaseServiceProvider.php     @TODO

  |---- DetectsDeadlocks.php            判定给定的数据库异常是否为数据库死锁类型异常
  |---- DetectsLostConnections.php      判断给定的数据库异常是否为断开连接类型异常

  |---- Grammar.php                     @TODO

  |---- MigrationServiceProvider.php    数据库迁移服务提供者

  |---- MysqlConnection.php             MySQL 数据库连接类
  |---- PostgresConnection.php          Postgres 数据库连接类
  |---- SQLiteConnection.php            SQLite 数据库连接类
  |---- SqlServerConnection.php         SQL Server 数据库连接类

  |---- QueryException.php              继承自 PDOException 异常
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年12月9日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Laravel ORM 概要
    • 1.1 Laravel ORM 简介
      • 1.2 Laravel ORM 的依赖组件
        • 1.3 Laravel ORM 下载安装
          • 1.4 Laravel ORM 目录结构
          • 二、 Laravel ORM 核心组件目录结构
            • 2.1 文件结构
            相关产品与服务
            数据传输服务
            腾讯云数据传输服务(Data Transfer Service,DTS)可帮助用户在业务不停服的前提下轻松完成数据库迁移上云,利用实时同步通道轻松构建高可用的数据库多活架构,通过数据订阅来满足商业数据挖掘、业务异步解耦等场景需求。同时,DTS 还提供私有化独立输出版本 DTS-DBbridge,支持异构数据库和同构数据库之间迁移和同步,可以帮助企业实现完整数据库迁移(如 Oracle)。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档