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

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

在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php,我们很快就能发现一个 query() 静态方法。...觉得到这里真的已经非常清晰了。 然后我们来看一下这个 Model 基类的其它方法,貌似没有发现 get() 、find() 之类的方法呀?这是怎么回事。...别急,get() 、find() 不都是在 查询构造器 的方法嘛。我们来看看 Model 的 __call() 这个方法。...而不是我们之前 查询构造器 laravel/framework/src/Illuminate/Database/Query/Builder.php 对象。...但 Eloquent\Builder 的内部持有的一个query 属性依然是 Query\Builder 对象,也就是说在底层,它依然是调用的我们熟悉的那个 查询构造器 来进行工作的。

2.8K20

Laravel系列4.2】查询构造器

我们又发现了一个设计模式在 Laravel 框架的应用,意外不意外,惊喜不惊喜! 连表查询 普通的连表查询的使用还是非常简单的,也就不多说了,下面的代码也有演示。...直接通过编辑器的跳转功能点击 update() 方法就会跳转到 laravel/framework/src/Illuminate/Database/Query/Builder.php 的 update(...update {$table} set {$columns} {$where}"; } protected function compileUpdateWithJoins(Builder $query...这个就要一步一步来看了,前面其实我们已经看到了 laravel/framework/src/Illuminate/Database/Query/Builder.php 这个对象的类文件,那么我们是怎么通过...// laravel/framework/src/Illuminate/Database/Query/Builder.php public function from($table, $as = null

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

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

但是你要知道的是,Laravel 以及现代化的所有框架都是可以方便地配置主从分离的。另外,我们还要再回去 查询构造器 ,看一下我们的原生 SQL 语句的拼装语法到底是如何生成的。...找到 laravel/framework/src/Illuminate/Database/Connection.php 的 select() 方法,可以看到它还有第三个参数。...在执行 update() 操作时,我们最后进入了 laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php 这个对象。...在 Builder ,get() 方法会调用一个 runSelect() 方法,这个方法里面会再调用一个 toSql() 方法,就是获得原始查询语句的方法。...这里就不贴代码了,剩下的东西就看大家自己怎么发掘咯! 总结 今天的内容其实相对来说轻松一些,毕竟关于 Laravel 数据库方面的内容重点在于之前学习过的 模型 和 查询构造器 上。

4.2K20

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

分享给大家供大家参考,具体如下: 1、连接数据库 laravel连接数据库的配置文件位于config/database.php,在其中connection字段包含laravel所支持的数据库的配置信息...Laravel将常用的数据库操作封装为接口函数提供给用户调用,从而使数据库操作更为便捷,这些接口就是查询构建器(query builder)。...')- when($order,function ($query){ return $query- orderBy('age','desc'); //$order为true时才执行语句...更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及...《php常见数据库操作技巧汇总》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

13.3K51

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

这个文件在你项目目录的 vendor/laravel/framework/src/Illuminate/Database/Query 下,你可以自行去查看。...DB facade 正常情况下你可能会这样写一个操作 DB::table('user')- get(); 这个操作首先经过laravel的门面指向文件,不过它并不在 app.php ,而是通过内核直接加载...Builder($query); } 最后我们到了 Illuminate\Database\Eloquent\Builder 文件下,这个类涵盖了ORM的基本操作,例如find , findOrFail...如果你在代码用到了get方法,抱歉,这里没有,它依旧会通过__call 方法将你的请求转发到 Illuminate\Database\Query\Builder $this- query- {$method...更多关于Laravel相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及

1.7K30

orm 系列 之 Eloquent使用2

本文会按照下面的顺序介绍: Model的创建 CRUD操作 查询和聚合操作 Hydrate 组合查询 Model创建 在laravel,创建一个model非常简单,我们可以通过下面的命令创建 php...$dirty); $this->fireModelEvent('updated', false); } 下面是读取操作,我们可以执行在命令行执行php artisan tinker进入命令...查询和聚合 Eloquent提供了丰富的查询方式,通过前面的__call方法分析,我们知道,这些最终调用的都是Eloquent/Builder方法,where方法也不例外,where其最简单的形式如下:...Hydrate 这个功能其实我们在之前The Clean Architecture in PHP 读书笔记(十)就提到过这个问题,如何能在数据库记录和我们的Model之间进行转换,此处有转换有两个方向...组合查询 组合查询也是非常酷的一个功能,我们在开发时常会写出各种各样的名字查询,如getLongBook,getCheapBook,getLongAndCheapBook等等,每次这种查询我们都必须要去写个方法

53041

Laravel学习记录--Model

详情访问laravel查询构造器 $model->where()->first()//单行查询 ->find(1)//根据主键查询 ->get(...$builder) { $builder->where('age', '>', 200); }); } } 注:如果你的全局作用域需要添加列到查询的...Eloquent还支持动态作用域,动态作用域指在查询过程动态设置预置过滤器的查询条件,动态作用域与本地作用域类似,都是以scope作为前缀,调用方法也相同,不同的是动态作用域可以通过额外参数指定查询条件...使用渴求式加载,即根据预先需求查询出所有数据 为了验证[渴求式加载]的好处,举下列例子 这里用到了Laravel Debugbar 调试 安装方法可参照的另一个博客 - - - Laravel...= 1; } 关联数据计数 如果你只想统计结果数并不需要加载数据,那么可以使用withCount方法,方法会在你的结果集模型添加一个{关联名_count}字段 如查询每个用户的号码数量 public

13.2K20

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

分享给大家供大家参考,具体如下: laravel分为三大数据库操作(DB facade[原始查找],查询构造器[Query Builder],Eloquent ORM): use Illuminate\...,[5]); 2.查询构造器[Query Builder] laravel查询构造器提供了方便流畅的接口,用来建立及执行数据库查找语法。...$studnets=Student::all(); dd($studnets); //find()查询一条,依据主键查询。...相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总...》 希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

2.8K20

牛哇,PHP这个开发框架真的好香!

而且也是从Java,golang裸转的php。这里不谈那种语言好坏之分。开发来说,拥抱技术,拥抱变化,公司用什么技术栈,你就用什么技术。熟练开发就好了。...数据库连接 1.database.php数据库 在当前文件配置mysql基本配置, config/database.php 'mysql' => [ 'driver' => 'mysql',...这个语法是并且 (and) 关系语法这个语法是或者 (or) 关系语法 采取model进行sql增删改查(常用) 9.4 查询 laravel对数据库开发模型非常重要。...= UserModel::query()->from('user AS u')->selectRaw('u.*'); $builderData = $builder->join('contract AS...觉得重点也在sql编写。更多的sql链式编写查询官方文档,应该是很快可以上手的。 之后还有比laravel更高级的用法lumen框架,就类似Java的mybatis-plus与mybatis。

21620

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

代码时间 常规的删除操作分两步进行,一步是把数据从数据库查询出来,使用laravel模型的方法, 则返回的是一个模型对象。第二步,调用模型对象的delete方法。...代码如下: $contact = Contact::find(5);$contact->delete(); 如果像上面的代码那样,已知数据条目的ID,那么可以直接使用destroy方法进行删除: Contact...在laravel, 这个软删除字段默认是 deleted_at。你也可以在模型手动指定。...$builder) { $builder->where('active', true); }); }} 那么所有的模型查询,都会默认加上声明的where...,许多表结构,或者模型的设计逻辑上, 都兼容了用法,那么独立成一个Scope类更为实用。

1.3K30

Laravel5.2之模型关联预加载

说明:本文主要说明Laravel Eloquent的延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查询次数。同时,会将开发过程的一些截图和代码黏上去,提高阅读效率。...开发环境:Laravel5.1+MAMP+PHP7+MySQL5.5 先写个店铺列表页 1.先装上开发插件三件套(具体可参考:Laravel5.2之Seeder填充数据小技巧) 不管咋样,先装上开发插件三件套...composer require mpociot/laravel-test-factory-helper --dev //config/app.php /** *Develop Plugin */...\Query\Builder|\App\Shop whereMerchantId($value) * @method static \Illuminate\Database\Query\Builder...: 然后写Seeder,可以参考Laravel5.2之Seeder填充数据小技巧: php artisan make:seeder MerchantTableSeeder php artisan make

2.5K41

Laravel源码解析之Eloquent Model

上篇文章我们讲了Database的查询构建器Query Builder, 学习了Query Builder为构建生成SQL语句而提供的Fluent Api的代码实现。...这篇文章我们来学习Laravel Database地另外一个重要的部分: Eloquent Model。...、 first这些常用的查询方法,我们都知道当调用一个不存在的类方法时PHP会触发魔术方法 __callStatic, 调用不存在的实例方法会触发 __call, 很容易就猜到上面这些方法就是通过这两个魔术方法来动态调用的...->all() )->all(); } //将查询出来的结果转换成Model对象组成的Collection public function hydrate(array...的where方法在接到调用请求后直接把请求转给来Query Builder的 where方法,然后get方法也是先通过Query Builder的 get方法执行查询拿到结果数组后再通过 newFromBuilder

2.2K50

tp5源码解析--Db操作

,当用静态调用的方法,不存在时会使用方法; //方法会利用connect()方法生成的单例,再去访问\think\db\connector\Mysql类里的方法; public static function...__callStatic($method, $params){} connector\Mysql类解析 // 对应一个类名,builder创建具体的SQL语句 protected $builder =...'\\think\\db\\builder\\Mysql'; //解析pdo连接的dsn信息 protected function parseDsn($config){} //取得数据表的字段信息 public...其中包含: 将本类作为单例传入,实例化Query对象,执行链式方法,如table()、where()、find(); 创建单例Mysql连接,分布式环境下若从库连接失败会自动连接主库; query()执行查询..., mixed $on = null, string $type = 'INNER') static 视图查询 * @method mixed find(mixed $data = null) static

60920
领券