第一步:实例化 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 方法