首页
学习
活动
专区
工具
TVP
发布

Laravel5.7 Eloquent ORM快速入门详解

此外,Eloquent 默认主键字段是自增整型数据,这意味着主键将会被自动转化为 int 类型,如果你想要使用非自增非数字类型主键,必须在对应模型中设置 incrementing 属性为 false...默认情况下,所有的 Eloquent 模型使用应用配置中默认数据库连接,如果你想要为模型指定不同连接,可以通过 $connection 属性来设置: <?...Eloquent all 方法返回模型表所有结果,由于每一个 Eloquent 模型都是一个查询构建器,你还可以添加约束条件到查询,然后使用 get 方法获取对应结果: $flights = App...\Eloquent\Builder */ public function scopeActive($query) { return $query- where('active', 1);...\Database\Eloquent\Builder */ public function scopeOfType($query, $type) { return $query- where

15K41
您找到你想要的搜索结果了吗?
是的
没有找到

Laravel源码解析之Eloquent Model

加载Eloquent Builder Eloquent Builder是在上文说到Query Builder基础上实现,我们还是通过具体例子来看,上文用到: DB::table('user')...Builder时候把数据库连接QueryBuilder对象传给了它构造方法, 下面就去看一下Eloquent Builder源码。...依赖还是数据库连接Query Builder实例去最后执行数据库update。...Model删除 Eloquent Modeldelete操作也是一样, 通过Eloquent Builder去执行数据库连接Query Builderdelete方法删除数据库记录: //Eloquent...是在Query Builder基础上做了进一步封装, Eloquent Builder会把这些CRUD方法调用转给Query Builder里对应方法来完成操作,所以在Query Builder里能使用方法到

2.2K50

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

OK, 总的来说,通过了解Query Builder实现原理后,知道其并不复杂神秘,只是一个对PDO更友好封装包裹,Query Builder有几个重要概念:连接类MySqlConnection...及其为其服务连接器MySqlConnector;Builder 类;SQL语法解析器MySqlGrammar;后置处理器MySqlProcessor。...那Eloquent ORM又是什么,与Query Builder是什么关系呢?既然有了Query Builder,为何还提供了Eloquent ORM呢?...实际上,Eloquent ORM又是对Query Builder封装,这样可以实现更多好用且Query Builder所没有的功能,如Model Relationships;Accessor/Mutator...以后再聊Eloquent ORM实现原理吧。 总结:本文主要学习了Query Builder编译SQL细节和执行SQL逻辑。后续在分享下Eloquent ORM实现原理,到时见。

1.2K51

orm 系列 之 Eloquent演化历程2

:是前一篇讲对于Active Record模式中Model功能,包括了Model、Builder和Relation功能,忘记可以去看前一篇orm 系列 之 Eloquent演化历程1内容 Query...首先是morphMany构造函数: public function __construct(Builder $query, Model $parent, $morphName) { $this...general_ci', 'prefix' => 'prefix_' ]); $capsule->setAsGlobal(); $capsule->bootEloquent(); 建立有3个步骤 添加数据库连接...第一步addConnection,添加了默认数据库配置,通过这个配置,我们可以通过DatabaseManager.connection来获取数据库连接connection,从而进行操作。...User extends Eloquent { // } 此处Eloquent已经通过初始化设置了静态变量$resolver,我们可以方便获取连接Connection了,也就是有了数据库操作功能

2.4K30

orm 系列 之 Eloquent演化历程1

Eloquent Eloquent是laravel中orm,采取是active record设计模式,里面的对象不仅包括领域逻辑,还包括了数据库操作,但是大家平时使用时候可能没有探究eloquent...初始化 Eloquent首先要对数据库连接做抽象,于是有了Connection类,内部主要是对PDO一个封装,但是如果只有Connection的话,一个问题是,我们需要直面sql,于是就有了Builder...类,其功能就是屏蔽sql,让我们能用面向对象方式来完成sql查询功能,Builder应该是sql builder,此时Eloquent主要类就如下: 其中Builder负责sql组装,Connection...\Builder一个封装,支持面向对象式sql操作,我们下面来看下当我们使用HasOne时候发生了什么。..., $foreign_key); 当使用User::with('phone')->get()时候,就会去eager load进phone了,具体过程中,在调用Eloquent\Builderget

1K30

Laravel5.3之Query Builder源码解析(上)

Query Builder并不复杂神秘,只是在PDO扩展基础上又开放封闭包装了一层,提供了fluent api,使得书写代码也很简洁流畅。...Eloquent主要实现类,如重点Model类,Builder类,Relations子文件夹内包含关系类。...是核心组件,也是类最多文件夹 Events 装载事件类文件夹 Migrations 实际执行migrate相关命令Query Query Builder代码主要在这个文件夹,主要类是Builder...'db',通常会通过该manager来'向下走'到对应数据库实现类,是重要类 Seeder class 主要负责seed命令时操作 数据库连接实例化 Query Builder主要在Query...文件夹下,以一行简单又经常使用代码为例来学习下内部实现原理吧: Route::get('/query_builder', function() { // Query Builder

92721

orm 系列 之 Eloquent使用2

上一篇介绍了Eloquentmigrations和Scheme Builder功能,本文介绍Eloquent最重要Model。...,从这个model出发,我们可能想要知道Book是在哪个表中,这个时候,我们可以设置$table属性,同时,我们想要设置主键及其类型,我们就设置$primaryKey,$keyType,同时,我们可能还想要指定数据库连接...都是通过调用Eloquent/Builder来实现。...查询和聚合 Eloquent提供了丰富查询方式,通过前面的__call方法分析,我们知道,这些最终调用都是Eloquent/Builder方法,where方法也不例外,where其最简单形式如下:...key和Modelattribute对应,Eloquent方法是直接将属性存储为一个$attributes数组,然后由用户自己根据字段名进行获取,但是,其实这也会有个问题,就是一旦字段名更改了,我们必须要去更改所有直接使用字段名地方

52441

Laravel5.3之Query Builder源码解析(上)

Query Builder并不复杂神秘,只是在PDO扩展基础上又开放封闭包装了一层,提供了fluent api,使得书写代码也很简洁流畅。...Eloquent主要实现类,如重点Model类,Builder类,Relations子文件夹内包含关系类。...是核心组件,也是类最多文件夹 Events 装载事件类文件夹 Migrations 实际执行migrate相关命令Query Query Builder代码主要在这个文件夹,主要类是Builder...'db',通常会通过该manager来'向下走'到对应数据库实现类,是重要类 Seeder class 主要负责seed命令时操作 数据库连接实例化 Query Builder主要在Query...文件夹下,以一行简单又经常使用代码为例来学习下内部实现原理吧: Route::get('/query_builder', function() { // Query Builder

69031
领券