Query Builder源码解析(下)

Laravel 学习笔记5.3之 Query Builder 源码解析(下)

房东的猫 提交于 2019-12-01 21:21:36
说明:本文主要学习下Query Builder编译 Fluent Api 为 SQL 的细节和执行SQL的过程。实际上,上一篇聊到了 \Illuminate\Database\Query\Builder 这个非常重要的类,这个类含有三个主要的武器: MySqlConnection, MySqlGrammar, MySqlProcessor 。 MySqlConnection 主要就是在执行SQL时做 连接 MySql数据库操作, MySqlProcessor 主要就是用来对执行SQL后的数据集做 后置处理 操作,这两点已经在之前上篇聊过,那 MySqlGrammar 就是SQL语法编译器,用来编译 Fluent Api 为 SQL 。最后使用 MySqlConnection::select($sql, $bindings) 执行SQL。 开发环境:Laravel5.3 + PHP7 Builder::toSql() 看下 toSql() 的源码: public function toSql() { // $this->grammar = new MySqlGrammar return $this->grammar->compileSelect($this); } public function compileSelect(Builder $query) { $sql =