Join 高级Join方法 Union操作 Where查询条件 简单的wehere条件 OR条件 其它where条件 whereBetween / whereNotBetween whereIn / whereNotIn...whereNull / whereNotNull 高级where条件 参数组(嵌套条件) whereExists (where exist) JSON类型的列查询 Ordering, Grouping...使用sql语句执行插入 基本插入操作 更新操作 使用sql语句执行更新操作 基本更新操作 指定列的增减 删除操作 使用sql执行删除 基本删除操作 悲观锁 事务处理 查看日志记录 其它操作 在Laravel...如果需要手动管理事务,则使用如下函数 DB::beginTransaction(); DB::rollback(); DB::commit(); 使用DB类的静态方法启用的事务不仅对普通sql查询有效,对Eloquent...); 这样不管什么操作都可以做了吧 另外含有两个方法,用于重新连接到指定数据库和断开连接 DB::reconnect('foo'); DB::disconnect('foo')d; ---- 参考: Laravel
问题引出 在通过 Eloquent 模型实现增删改查这篇教程中,我们已经学习了如何在 Eloquent 模型类中进行各种查询,但是这些查询大多需要手动调用查询构建器提供的各种方法来实现。...以 User 模型类为例,我们在系统中可能只想针对已经验证过邮箱的用户进行操作,在没有介绍「作用域」之前,可能你会在应用中到处编写这样的代码: $users = User::whereNotNull('...function apply(Builder $builder, Model $model) { return $builder->whereNotNull('email_verified_at...这样,我们就可以把之前查询代码 User::whereNotNull('email_verified_at')->... 中对 email_verified_at 的过滤条件去掉了。...本系列教程首发在Laravel学院(laravelacademy.org)
('users') ->whereNotBetween('votes', [1, 100]) ->get(); #whereIn / whereNotIn...->whereIn('id', [1, 2, 3]) ->get(); $users = DB::table('users') ->whereNotIn...('id', [1, 2, 3]) ->get(); #whereNull / whereNotNull / orWhereNull / orWhereNotNull...->whereNull('updated_at') ->get(); $users = DB::table('users') ->whereNotNull...'>', 100)->dd(); DB::table('users')->where('votes', '>', 100)->dump(); 参考 https://learnku.com/docs/laravel
「ActiveRecord」是 ORM 的一种实现模式,Eloquent 则是 Laravel 版的「ActiveRecord」。...获取聚合结果 Eloquent 模型类同样支持 count、sum、avg、max、min 等聚合函数查询: $num = User::whereNotNull('email_verified_at')...= User::whereNotNull('email_verified_at')->avg('id'); # 平均值 $min = User::whereNotNull('email_verified_at...你会发现,如果你掌握了查询构建器,就等同于掌握了 Laravel 中的所有数据库查询操作。...本系列教程首发在Laravel学院(laravelacademy.org)
查询小技巧 我们首先来介绍几个 Laravel 自带的语法糖,可以帮助我们快速获取期望的查询结果,提高编码效率。...同样,与之相对的,还有一个 whereNotIn 方法,表示与 whereIn 相反的查询条件。...将上述代码中的 whereIn 方法改为 whereNotIn,对应的查询子句就是 where user_id not in (1, 3, 5, 7, 9)。...>whereTime('created_at', '<', '14:00'); })->get(); 在这个匿名函数中传入的 $query 变量也是一个查询构建器的实例。...本系列教程首发在Laravel学院(laravelacademy.org)
上篇文章我们主要讲了Eloquent Model关于基础的CRUD方法的实现,Eloquent Model中除了基础的CRUD外还有一个很重要的部分叫模型关联,它通过面向对象的方式优雅地把数据表之间的关联关系抽象到了...按照Laravel设定好的模式来写关联模型每个人都能写出高效和优雅的代码 (这点我认为适用于所有的Laravel特性)。...我们通过官方文档里的例子来看一下Laravel是怎么定义这两种关联的。 一对多 class Post extends Model { /** * 获得此博客文章的评论。...->where($this->foreignKey, '=', $this->getParentKey()); $this->query->whereNotNull($this...模型关联常用的一些功能的底层实现到这里梳理完了,Laravel把我们平常用的join, where in 和子查询都隐藏在了底层实现中并且帮我们把相互关联的数据做好了匹配。
前言 泛微OA使用的Laravel 这是其对接数据库的文档 位置 项目位置 D:\e-office_server_11.0\www 外部脚本位置 D:\e-office_server_11.0\...方法验证给定列的值不在给定数组中: $users = DB::table('users') ->whereNotIn('id', [1, 2, 3])...whereNull/whereNotNull/orWhereNull/orWhereNotNull whereNull 方法验证给定列的值为 NULL: $users = DB::table('users...') ->whereNull('updated_at') ->get(); whereNotNull 方法验证给定列的值不是 NULL: $users =...DB::table('users') ->whereNotNull('updated_at') ->get(); whereDate/whereMonth
根据单一责任开发原则来讲,在laravel的开发过程中每个表都应建立一个model对外服务和调用。...protected $table = 'users'; } 解析 Laravel的数据操作分两种 – DB facade – Eloquent ORM 它们除了有各自的特色外,基本的数据操作都是通过...这个文件在你项目目录中的 vendor/laravel/framework/src/Illuminate/Database/Query 下,你可以自行去查看。...类,开头我们讲过这个类了,这里就不多说了,随后就是各种sql的拼接->执行sql->结束战斗 Eloquent ORM Eloquent ORM 与DB facade 类似,首先每个 Eloquent...new Builder($query); } 最后我们到了 Illuminate\Database\Eloquent\Builder 文件下,这个类中涵盖了ORM的基本操作,例如find , findOrFail
经过一番调研之后发现了一个堪称神器的扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了对 INSERT & UPDATE (UPSERT) 和 INSERT...//校验是否存储 public static function checkExist($userid, $otherUserid) { return self::query...你可以在 Eloquent 模型中使用 UPSERT 和 INSERT IGNORE 查询。...->upsert(...); 在 Eloquent 中,所有版本的 LumenHasUpsertQueries都需要该特性。...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库的时间是int类型,不是laravel默认的时间格式,并且我们的插入时间和更新时间也不是laravel默认的字段
说明:本文主要说明Laravel Eloquent的延迟预加载(Eager Loading),使用延迟预加载来减少MySQL查询次数。同时,会将开发过程中的一些截图和代码黏上去,提高阅读效率。...开发环境:Laravel5.1+MAMP+PHP7+MySQL5.5 先写个店铺列表页 1.先装上开发插件三件套(具体可参考:Laravel5.2之Seeder填充数据小技巧) 不管咋样,先装上开发插件三件套...: composer require barryvdh/laravel-debugbar --dev composer require barryvdh/laravel-ide-helper --dev...\Illuminate\Database\Query\Builder|\App\Phone whereUpdatedAt($value) * @mixin \Eloquent */ class Phone...static \Illuminate\Database\Query\Builder|\App\Shop whereUpdatedAt($value) * @mixin \Eloquent */ class
Record模式中Model的功能,包括了Model、Builder和Relation功能,忘记的可以去看前一篇orm 系列 之 Eloquent演化历程1的内容 Query:包含了最基本的Sql的操作和语法逻辑...本文最后讲下Eloquent中新增的对象之间的关系:多态关系,以下内容摘自[ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系 表结构 多态关联允许一个模型在单个关联下属于多个不同模型...Manager,记得网上搜索过关键字Using Eloquent outside Laravel,我们可以看到一篇Vivek Kumar Bansal写的文章,文章从2方面介绍了怎么使用Eloquent...Schema和Query,同时DatabaseManger和Eloquent还处理协作关系,Eloquent负责领域类的打理,最后ConnectionFactory则打点着所有的Connection,提供基础的功能...参考 [ Laravel 5.3 文档 ] Eloquent ORM —— 关联关系
对于任何一个模型,如果需要使用软删除功能,需要在模型中使用 Illuminate\Database\Eloquent\SoftDeletes这个 trait。...Laravel中软删除数据的过滤也是使用这种方式实现的。...SoftDeletes trait中加入了Illuminate\Database\Eloquent\SoftDeletingScope全局的Scope。...以上就是Laravel实现软删除的大概逻辑。这里有一个细节,Laravel中软删除的标记是一个时间格式的字段,默认delete_at。通过是否为null判断数据是否删除。...在这样的场景下,需要对Laravel的软删除进行修改才能够实现。
学院」的所有用户: $users = User::whereHas('posts', function ($query) { $query->where('title', 'like', 'Laravel...= User::whereHas('posts', function ($query) { $query->where('title', 'like', 'Laravel学院%')...$query->where('title', 'like', 'Laravel学院%') ->orWhereExists(function ($query) { $query...) { $query->where('title', 'like', 'Laravel学院%'); })->whereHas('posts.comments', function ($query...', function ($query) { $query->where('content', 'like', 'Laravel学院%'); })->get(); 无结果过滤 与 has/orHas
应用场景 某些SQL语句需要加某些共同的条件,例如status > 0,如果我们每条SQL语句都加的话显然是很麻烦的,作为一个优雅的框架,当然有相应的解决办法 编写作用域 Laravel 应用默认并没有为作用域预定义文件夹...{ /** * Apply the scope to a given Eloquent query builder...Model { public function scopeStatus($query){ return $query->where('status','>',...1); } public function scopeType($query){ return $query->where('type','>', 0...$query->type(); })->get();
继续介绍 Laravel Eloquent 的小技巧 11....但是查询的返回都是一个 Collection 对象,Laravel 为集合提供了很多方便的操作方法,sortBy 就是其中一个,当然还可以用 filter 等集合操作) 12....Laravel 默认会给所有实体类配置时间戳,如果不需要一般是在模型中指定 $timestamps = false 18. update()方法的返回值是什么?...正确的方法稍微有些复杂,需要用到闭包函数作为子查询: $q->where(function ($query) { $query->where('gender', 'Male')...->where('age', '>=', 18); })->orWhere(function($query) { $query->where('gender', 'Female')
laravel/framework/src/Illuminate/Collections/Collection.php 是集合类,里面的方法大部分都调用的是 laravel/framework/src/...在所有模型都要继承的 laravel/framework/src/Illuminate/Database/Eloquent/Model.php 类中,我们很快就能发现一个 query() 静态方法。...而不是我们之前 查询构造器 中的 laravel/framework/src/Illuminate/Database/Query/Builder.php 对象。...但 Eloquent\Builder 的内部持有的一个query 属性依然是 Query\Builder 对象,也就是说在底层,它依然是调用的我们熟悉的那个 查询构造器 来进行工作的。...参考文档: https://learnku.com/docs/laravel/8.x/eloquent/9406
提供内置查询语句构造器,Eloquent ORM,表空间(schema)构造器实现 PHP 对数据库操作的 ORM 系统。...'collation' => 'utf8_unicode_ci', 'prefix' => '', ]); // Set the event dispatcher used by Eloquent...(optional) $capsule->setAsGlobal(); // Setup the Eloquent ORM......数据库迁移(migrate)等相关命令行工具类 |---- Eloquent ORM 系统实现 |---- Events...ORM 处理过程中的事件接口定义 |---- Migrations 定义数据库迁移命令行工具对应的数据迁移实现类 |---- Query
代码时间 常规的删除操作分两步进行,一步是把数据从数据库中查询出来,使用laravel模型的方法, 则返回的是一个模型对象。第二步,调用模型对象的delete方法。...在laravel中, 这个软删除字段默认是 deleted_at。你也可以在模型中手动指定。...模型中相关代码如下: use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Eloquent\SoftDeletes;class...$query->update($columns);} 为了说明问题,我们把中间几行代码都省略了。...Contact extends Model{ public function scopeStatus($query, $status) { return $query-
下面是翻译自 Laravel-News 的一篇教程,总结了 Laravel 的对象关系映射框架(ORM)的几个小技巧。...XorY 方法 Eloquent有很多方法是两个方法的组合,实现 “请做X,否则做Y”这样的需求。...模型属性: 时间戳, 附加属性(appends) 等 Eloquent模型有一些“参数”,会以该类的属性形式出现。...query = Author::query(); $query->when(request('filter_by') == 'likes', function ($q) { return $q-...withDefault([ 'name' => 'Guest Author' ]); } 太长了,下一篇再续上 http://blog.kbiao.me/2019/01/05/20-Laravel-Eloquent-Tips-and-Tricks
Laravel介绍 Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。...在Laravel中已经具有了一套高级的PHP ActiveRecord实现 — Eloquent ORM。...Eloquent原生支持Fluent中查询构造器(query-builder)的所有方法。...Laravel 安装说明 Laravel 使用 Composer 来管理项目依赖。因此,在使用 Laravel 之前,请确保你的机器已经安装了 Composer。...例如, laravel new blog 将会创建一个名为 blog 的目录,并已安装好 Laravel 所有的依赖项: laravel new blog 在PHPStorm中配置,使其更好的支持Laravel