laravel model 类 数据库连接分析,如何建立数据库连接

 

第一步:实例化 Capsule ,

这里的代码是框架自定义读取配置文件,进行orm的初始化

 

第二步:这里将DatabaseManager 赋值给了 Model 类的$resolver 属性(下文还要用)

 

 

第三步:进入正题了,调用model::where 方法,首先触发callStatic ,接着触发call  魔术方法

第四步:newQuery -> newQueryWithoutScopes -> newModelQuery

 

再到 newBaseQueryBuilder -> getConnection

getConnection -> resolveConnection -> 找到$resolver (就是第二部的那个DatabaseManager)

根据model 类定义的数据库连接名  返回这个数据库链接

 

 

文字总结:

1,config::initEloquent ::设置databasemanager

setConnectionResolver

 

2,model -> callStatic ->call

newQuery ->newQueryWithoutScopes -> newModelQuery ->newBaseQueryBuilder (

$this->getConnection(); 这里进行数据库连接)

static::resolveConnection($this->getConnectionName()); -> static::$resolver->connection($connection); (static::$resolver => databaseManager) -> DatabaseManager ->makeConnection($database) ->make -> createSingleConnection

 

Eloquent\Builder. :此方法 将Query\Builder 实例赋值给了 $this->query

 

 

3,\Illuminate\Database\Eloquent\Builder::where :此时使用$this->query 执行where 方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值