首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel框架源码解析之模型Model原理与用法解析

根据单一责任开发原则来讲,laravel开发过程每个表都应建立一个model对外服务和调用。...$table = 'users'; } 解析 Laravel数据操作分两种 DB facade Eloquent ORM 它们除了有各自特色外,基本数据操作都是通过 Illuminate\Database...这个文件在你项目目录 vendor/laravel/framework/src/Illuminate/Database/Query 下,你可以自行去查看。...Builder($query); } 最后我们到了 Illuminate\Database\Eloquent\Builder 文件下,这个类涵盖了ORM基本操作,例如find , findOrFail...如果代码用到了get方法,抱歉,这里没有,它依旧会通过__call 方法将你请求转发到 Illuminate\Database\Query\Builder $this- query- {$method

1.7K30

Laravel系列4.4】模型Eloquent ORM使用(二)

模型Eloquent ORM使用(二) 对于模型探索我们还将继续。上篇文章,只是简单地通过模型操作了一下数据库,并且学习了一下关联操作知识。...这个 toArray() 并不是 Builder 方法,如果不加这个 toArray() ,返回是什么大家有没有注意过?...这是一个连续递进关系,之前 查询构造器 文章,我们已经看到了它底层就是调用 原生查询 操作。那么这回,我们再来看一下 Model 方法,底层是不是调用是 查询构造器 。...不是我们之前 查询构造器 laravel/framework/src/Illuminate/Database/Query/Builder.php 对象。...但是,这里划重点了,Eloquent\Builder 中有些方法是没有的,比如说 insert()、insertGetId() ,模型使用 save() 就可以代替这两个方法操作。

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

orm 系列 之 Eloquent演化历程2

,所以讲错误地方,恳请大牛们能不吝赐教;或者如果有什么地方是没看懂,也请提出来,因为可能那地方就是自己没看懂,所以没讲明白,你提出后我们就可以一起讨论,让我们能共同进步。...,也是laravel中一大亮点Artisan,Artisan是 Laravel 自带命令行接口名称,此处不做具体介绍了,有机会再细说,当我们命令行执行php artisan command时候...:是前一篇讲对于Active Record模式Model功能,包括了Model、Builder和Relation功能,忘记可以去看前一篇orm 系列 之 Eloquent演化历程1内容 Query...本文最后讲下Eloquent中新增对象之间关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型单个关联下属于多个不同模型...文件,其最初是f851607加入,我们来看下Manager内容。

2.4K30

Laravel源码解析之Model

根据单一责任开发原则来讲,laravel开发过程每个表都应建立一个model对外服务和调用。...protected $table = 'users'; } 解析 Laravel数据操作分两种 – DB facade – Eloquent ORM 它们除了有各自特色外,基本数据操作都是通过...Database\Query 类,开头我们讲过这个类了,这里就不多说了,随后就是各种sql拼接->执行sql->结束战斗 Eloquent ORM Eloquent ORM 与DB facade 类似...new Builder($query); } 最后我们到了 Illuminate\Database\Eloquent\Builder 文件下,这个类涵盖了ORM基本操作,例如find , findOrFail...如果代码用到了get方法,抱歉,这里没有,它依旧会通过__call 方法将你请求转发到 Illuminate\Database\Query\Builder $this->query->{$method

1.1K30

Laravel Eloquent ORM 实现查询表中指定字段

使用Laravel ORMModel方法find, get, first方法获取数据对象时返回数据对象attributes属性数组里会包含数据表中所有的字段对应键值关系, 那么如何在ORM查询时只返回数据表中指定字段数据呢...由于ORM依赖了QueryBuilder来实现查询, QueryBuilder源码里通过查看get,first方法实现可以到,他们都可以接收一个数组参数来指定要查询字段: find方法实现是...- model- getQualifiedKeyName(), '=', $id); return $this- first($columns); } 由于Eloquent Query Builder...是依赖查询构建器\Illuminate\Database\Query\Builder,first和get方法源码Query Builder里如下: /** * Execute the query...以上这篇Laravel Eloquent ORM 实现查询表中指定字段就是小编分享给大家全部内容了,希望能给大家一个参考。

3K21

Laravel系列4.3】模型Eloquent ORM使用(一)

this->child->{模型Eloquent ORM使用(一) 先来说说 ORM 是什么,不知道有没有不清楚这个概念小伙伴,反正这里就一道科普一下算了。...其实,Laravel Eloquent ORM 也是 Active Record 实现,这也是现在 ORM 主流。...如果表中有这两个字段的话,那么 Model 操作过程,你可以忽略这两个字段操作,Model 系统会自动设置它们。...标准数据库结构,我们是有主外键概念,但是,说实话, MySQL使用主外键情况还真的是非常少。之前似乎有印象说 MySQL 不是很推荐通过主外键来建立表之间联系。...这个我们以后再详细学习 MySQL 相关文章时再深入学习。至于这件事是不是真的,也只是仅有一个印象了,如果说得不对,也请大家不要见怪,后面学习到时候我们再来纠正。

8.8K20

laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析

本文实例讲述了laravel框架数据库操作、查询构建器、Eloquent ORM操作。...' = 1]); 3、通过查询构建器操作数据库 Laravel将常用数据库操作封装为接口函数提供给用户调用,从而使数据库操作更为便捷,这些接口就是查询构建器(query builder)。...Laravel内置Eloquent ORM提供了一种便捷方式帮助你组织数据库数据,每张数据表都对应一个与该表进行交互模型(Model),通过Model类,你可以对数据表进行查询、插入、更新、删除等操作...Eloquent ORM本质上是查询构建器,因此上面查询构建器所使用方法Eloquent都可以使用。...使用create批量添加时,需要在模板通过fillable指定可以赋值字段,也可以guard指定不允许赋值字段。

13.3K51

Laravel5.2之Demo1——URL生成和存储

这里url表示提交表单时路由,方法为post。在这里使用laravelcollective/html这个组件,顺便了解下怎么laravel安装组件。 这里书中使用laravel4....Mapping)为Eloquent ORM,其实就是Model层,来管理数据库数据表且一一对应关系。...不过有时也推荐使用Query Builder查询构造器,实际上就是SQL语句封装类,性能会比较高一些,个人遇到过一个场景:使用Eloquent ORM性能有点慢,导致PHP执行过长报503 Time...Out,改成Query Builder后性能高很多脚本执行很快搞定,当然各有利弊,毕竟Eloquent很强大很好用。...laravel框架使用也仅此而已,没有那么复杂,对于我们这样刚刚入门,了解这个流程就可以玩一玩了!!!

24K31

laravel框架模型和数据库基础操作实例详解

分享给大家供大家参考,具体如下: laravel分为三大数据库操作(DB facade[原始查找],查询构造器[Query Builder],Eloquent ORM): use Illuminate\...,[5]); 2.查询构造器[Query Builder] laravel查询构造器提供了方便流畅接口,用来建立及执行数据库查找语法。...; 3.Eloquent ORM 1.简介、模型建立及查询数据 简介:laravel所自带Eloquent ORM 是一个ActiveRecord实现,用于数据库操作。...,默认取得是按日期格式化好时间戳,如果想取得原本时间戳,则在模型里增加asDateTime方法。...修改数据 使用save方法更新模型 使用update方法更新数据(和create相对应Eloquent模型类还支持使用update方法更新数据,同样要用到批量赋值) //通过模型更新数据 $student

2.8K20

Laravel5.7 Eloquent ORM快速入门详解

简介 Laravel 内置 Eloquent ORM 提供了一个美观、简单与数据库打交道 ActiveRecord 实现,每张数据表都对应一个与该表进行交互模型(Model),通过模型类,你可以对数据表进行查询...时间戳 默认情况下,Eloquent 期望 created_at 和 updated_at 已经存在于数据表如果你不想要这些 Laravel 自动管理数据列,模型设置 $timestamps...这些方法返回单个模型实例不是模型集合: // 通过主键获取模型... $flight = App\Flight::find(1); // 获取匹配查询条件第一个模型......当然,这两个属性你只能同时使用其中一个不能一起使用,因为它们是互斥。下面的例子,除了 price 之外所有属性都是可以赋值: <?...当模型被软删除后,它们并没有真的从数据库删除,而是模型上设置一个 deleted_at 属性并插入数据库,如果模型有一个非空 deleted_at 值,那么模型已经被软删除了。

15K41

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

MySqlConnection主要就是执行SQL时做连接MySql数据库操作,MySqlProcessor主要就是用来对执行SQL后数据集做后置处理操作,这两点已经之前上篇聊过,那MySqlGrammar...所以这里可看出Query BuilderPHP PDO基础上实现一层封装,使得用更加面向对象Fluent API来操作数据库,不需要写一行SQL语句。...那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.3K51

3分钟短文:Laravel 从软删除说到模型作用域概念

我们从软删除使用,再顺便说一说模型作用域概念。 代码时间 常规删除操作分两步进行,一步是把数据从数据库查询出来,使用laravel模型方法, 则返回是一个模型对象。...所以引入了软删除概念,就是表内添加一个字段,用于标记,这一行条目是否算是删除状态。laravel, 这个软删除字段默认是 deleted_at。你也可以模型手动指定。...如果使用系统migrate方法创建迁移文件,那么只用在构造方法添加如下代码: Schema::table('contacts', function (Blueprint $table) {...然后模型,引入软删除功能,将其进行全局生效使用。...$builder->where('active', true); }); }} 那么所有的模型查询,都会默认加上声明where约束。

1.3K30

3分钟短文:Laravel模型作用域,为你“节省”更多代码

全局作用域 假设有些数据库查询操作,无论是控制器内,或者模板文件内,或者命令行方法内,都有重复使用需求,要是模型内有一个公用方法,默认就加上这些筛选条件,就可以显著减少代码量了。...events WHERE `published` = 1; 如果条件 published = 1 默认情况下需要开启,我们可以使用laravel模型 全局作用域 方式为所有查询追加上这个条件。...模型文件 Event 内头部引入下述类: use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder...那有些读者可能要问了:“如果不想要这个约束语句,岂不是模型也永不了了?” 那哪儿能呢!不过就是QueryBuilder一个属性数组一个元素而已,手动移除就行了,这样特例问题就解决了。...声明一个本地作用域,只要遵循laravel语法规定即可,如下示例: public function scopePublished($query) { return $query->where('published

1.4K22

3分钟短文:Laravel 模型查询数据库几个关键方法

引言 本期继续我们laravel学习,主要说一说laravel使用eloquent orm 模型 读取数据库条目的几个常用方法。 ?...因为设计原因,laravel支持链式操作 本质上方法返回值归属于不同类。所以使用方法之前务必明确调用是哪个类那个方法,返回是什么类型数据。...eloquent门面为我们提供了很多好用链式操作方法, query builder筛选出合适条目后,返回一个eloquent collection,或者是一个 基类collection对象,可以直接使用集合方法操作数据集...如果返回是多个条目,就不能用这些方法了: $vipContacts = Contact::where('vip', true)->get(); 有一个标准方法 get,就是返回一个 eloquent...如果数据库条目固定, 且是少量数据,那么直接用 $contacts = Contact::all(); 把记录全部拿出来就好了。

2K40

Laravel系列4.5】主从库配置和语法生成

作用是,同一次请求如果执行了增删改操作,那么紧接着查询也会走 write 也就是主库查询。...然后顺着贴出代码,可以一路看到就是如果有read 配置,那么就会先使用 write 配置创建一个主连接,接着调用这个主连接 setReadPdo() 方法并根据 read 配置又创建了一个从数据库连接...但是 查询构造器 以及上层 Eloquent ORM 都是之前讲过面向对象式链式生成对象之后完成数据库查询,这其中,肯定有 SQL 语句生成过程,这就是我们接下来要学习内容。...这里就不贴代码了,剩下东西就看大家自己怎么发掘咯! 总结 今天内容其实相对来说轻松一些,毕竟关于 Laravel 数据库方面的内容重点在于之前学习过 模型 和 查询构造器 上。...当然,更复杂东西其实还是构造器,毕竟在语法生成这里其实是已经到了最后拼装阶段了。有兴趣同学可以多深入研究一下 Builder 对象关于上述功能方法实现。

4.2K20

orm 系列 之 Eloquent使用1

Eloquent ORM 本文会是一个Eloquent使用教程,在此之前,我们先讲述下怎么搭建环境,完整系列请查看orm 基础环境搭建 记录下怎么用docker搭建laravel环境 新建项目composer...通过EloquentScheme Builder构建数据库 通过使用Schema Builder我们可以设计数据库时候,不写一行sql,通过Schema Builder,我们可以 creating...我们多人开发过程,每个人开发阶段不同、DB状态也不同,整合时无法知道差异,但是如果直接修改DB的话,没有记录也没办法恢复,这时候,我们就需要引入Migration了。...总结 本文主要是介绍了使用docker来构建laravel开发环境,同时,我们也介绍了怎么说会用phpstorm来开发laravel,搭建好环境后,主要介绍了EloquentSchema Builder...和migrations功能,通过使用Schema Builder,使得我们可以不用写一句sql就可以完成数据库设计,migrations则使得我们团队协作,更好对数据库进行版本控制。

1.7K20
领券