前言
在《如何理解laravel服务加载流程》中分析了服务的执行流程,得知框架的所有扩展功能都由服务(Provider)提供。
那么需要先猜想,数据库操作也是通过服务产生的。
分析
查看配置文件有没有服务配置
config/app.php
查看服务入口
src\Illuminate\Database\DatabaseServiceProvider.php
Eloquent模型
src\Illuminate\Database\Eloquent\Model.php
注:下述没有说明的代码段都来自Model.php
构造函数初始化过程
Eloquent中如何产生数据库连接
首先需要在文档中知悉如何使用模型
摘自learnku.com的一段代码:
分析all方法
$resolver指向哪里:上文中的服务提供者里的Model::setConnectionResolver
的入参是DatabaseManager
实例,所以$resolver
指向的是DatabaseManager
。
数据库管理器如何产出连接
src\Illuminate\Database\DatabaseManager.php
src\Illuminate\Database\Connectors\ConnectionFactory.php