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

如何在Laravel eloquent中对计算列执行WHERE子句?

在Laravel Eloquent中,可以使用计算列(Computed Column)来执行WHERE子句。计算列是指通过对数据库中已有列进行计算或操作,生成新的列。

要在Laravel Eloquent中对计算列执行WHERE子句,可以使用whereRaw方法。该方法允许我们直接传入原始的SQL语句作为WHERE条件。

下面是一个示例,假设我们有一个users表,其中包含nameage两个列。我们想要筛选出年龄大于等于18岁的用户,可以使用计算列来实现:

代码语言:txt
复制
$users = DB::table('users')
            ->select('name', 'age', DB::raw('(YEAR(CURDATE()) - YEAR(birthdate)) AS calculated_age'))
            ->whereRaw('(YEAR(CURDATE()) - YEAR(birthdate)) >= ?', [18])
            ->get();

在上述示例中,我们使用了DB::raw方法来创建计算列calculated_age,它通过当前日期和用户的出生日期计算出用户的年龄。然后,我们使用whereRaw方法来对计算列calculated_age执行WHERE子句,筛选出年龄大于等于18岁的用户。

需要注意的是,whereRaw方法中的?是一个占位符,用于接收参数值。我们可以通过第二个参数传递参数值,确保SQL语句的安全性。

关于Laravel Eloquent的更多信息,可以参考腾讯云的Laravel Eloquent文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

3分钟短文:Laravel说要用软删除,可不要真删

真实的SQL如下: DELETE FROM events WHERE id = 12; laravel提供了许多语法糖,上面使用 find 和 delete 两个步骤,可以缩减为一个方法 destroy...软删除 在许多情况下,你不会真正想要从数据库删除记录,而是用一种不再在应用程序显示它们的方式其进行注释。这就是所谓的软删除。...Laravel本身支持软删除,只需要进行少量的配置更改,以确保在执行delete或destroy时,模型的记录不会被实际删除。作为一个例子,我们修改Event模型以支持软删除。...首先创建一个新的迁移,将名为deleted_at的添加到events表: php artisan make:migration add_soft_delete_to_events --table=events...其实原理很简单,就是为模型追加一个全局作用域,为每个查询子句追加上如下筛选条件: WHERE deleted_at IS NULL laravel已经为我们写好这部分逻辑了,在模型内引入如下trait:

2.1K00

Laravel5.7 Eloquent ORM快速入门详解

时间戳 默认情况下,Eloquent 期望 created_at 和 updated_at 已经存在于数据表,如果你不想要这些 Laravel 自动管理的数据,在模型类设置 $timestamps...这些方法返回计算后的结果而不是整个模型实例: $count = App\Flight::where('active', 1)- count(); $max = App\Flight::where('active...Diego') - update(['delayed' = 1]); update 方法要求以数组形式传递键值参数,代表着数据表应该被更新的。...firstOrCreate 方法先尝试通过给定/值在数据库查找记录,如果没有找到的话则通过给定属性创建一个新的记录。...,可以使用观察者来所有监听器分组到一个类,观察者类拥有反射你想要监听的 Eloquent 事件对应的方法名,每个方法接收模型作为唯一参数。

15K41

需要掌握的 Laravel Eloquent 搜索技术

本文将带领大家学习 MySQL 和 Eloquent 在搜索模块设计的相关技术。 基本的 Eloquent Where 查询 作为首个要讲解的搜索功能,我们先不涉及新知识点。...在 Laravel 可以使用 where 方法实现给定字段和给定值进行比较查询,就是这样简单。 <?...在 JSON 搜索 JSON 类型让数据存储拥有灵活性,这个功能很赞。Laravel 也可以轻松执行 JSON 数据的查询,这得益于 Laravel 良好的 JSON 支持。...不过在深入研究之前需要注意的一点是:谨记 JSON 的存储是 区分大小写 的。 而如果我们需要查询的数据不存在 区分大小写 的问题,可以执行类似下面的查询语句: <?...5.6.8 以上的 Laravel 版本,可以查看 Laravel changelog 执行 sound like 操作,会进行一个发音相似性的算法,然后获取结果集。

3.5K10

Laravel代码简洁之道和性能优化

经过一番调研之后发现了一个堪称神器的扩展:laravel-upsert 这个 Laravel 扩展为查询构建器和 Eloquent 添加了 INSERT & UPDATE (UPSERT) 和 INSERT...upsert()还将添加updated_at到更新的。...->upsert(...); 在 Eloquent ,所有版本的 LumenHasUpsertQueries都需要该特性。...当然了还是有一些注意点和坑,下面分享一下 注意的问题 要根据需求添加唯一索引 根据官方文档的说明,我们的model必须添加这行代码,才能以Eloquent的方式用 use \Staudenmeir\...LaravelUpsert\Eloquent\HasUpsertQueries; 因为我们数据库的时间是int类型,不是laravel默认的时间格式,并且我们的插入时间和更新时间也不是laravel默认的字段

5.7K20

需要掌握的 Laravel Eloquent 搜索技术

本文将带领大家学习 MySQL 和 Eloquent 在搜索模块设计的相关技术。 基本的 Eloquent Where 查询 作为首个要讲解的搜索功能,我们先不涉及新知识点。...在 Laravel 可以使用 where 方法实现给定字段和给定值进行比较查询,就是这样简单。 <?...在 JSON 搜索 JSON 类型让数据存储拥有灵活性,这个功能很赞。Laravel 也可以轻松执行 JSON 数据的查询,这得益于 Laravel 良好的 JSON 支持。...不过在深入研究之前需要注意的一点是:谨记 JSON 的存储是 区分大小写 的。 而如果我们需要查询的数据不存在 区分大小写 的问题,可以执行类似下面的查询语句: <?...5.6.8 以上的 Laravel 版本,可以查看 Laravel changelog 执行 sound like 操作,会进行一个发音相似性的算法,然后获取结果集。

4.3K20

3分钟短文 | Laravel复杂SQL超多WHERE子句,本地作用域你没用过

Laravel提供的 eloquent orm 使用面向对象的方式封装了PDO数据库操作,使用起来非常方便,对于复杂的SQL操作也游刃有余。...今天说一说,复杂的超多的WHERE子句,怎么写起来较为优雅。 学习时间 比如对于业务逻辑,User模型在筛选查询的时候有非常多的限制条件,类似下面这样的: ?...首先,你完全不必把每个条件都使用where链式调用,可以把查询条件放在一个 array 数组内,整体传入where子句。 ? 这样把拼装where子句的工作,提前到查询数组的操作上,就更加灵活了。...Laravel 的软删除功能就是利用此特性从数据库获取 “未删除”的模型。 你可以编写你自己的全局作用域,很简单、方便的为每个模型查询都加上约束条件。看官方给出的示例: ?...就是在对应的 Eloquent 模型方法前添加 scope 前缀,在模型构造如下的作用域方法: ?

2.7K10

Laravel 实现Eloquent模型分组查询并返回每个分组的数量 groupBy()

Laravel 5.5 Linux mint 18 PHPStorm 最近刚玩Laravel,手册源码还没来得及看完就跃跃欲试做了个小项目,其中有个需求是分组查询数据库的一个字段并返回每个分组的数量...,还是去翻手册(手册确实够简单): groupBy 和 having 方法可用来查询结果进行分组。...having 方法的用法和 where 方法类似: $users = DB::table('users') - groupBy('account_id') - having('account_id...这些表达式将会被当作字符串注入到查询,所以要小心避免造成 SQL 注入攻击!...参考: Laravel Eloquent groupBy() AND also return count of each group 以上这篇Laravel 实现Eloquent模型分组查询并返回每个分组的数量

4.2K51

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言 今天说一个细分的需求,在模型,或者使用laravel提供的 Eloquent ORM 功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写? 本文通过几个例子,为大家梳理一下。...然后调用模型的 where 查询语句: $reservations = Reservation::where('reservation_from', $now)->get(); 上一条生成的SQL语句如下...to 在laravel你可以使用 whereBetween 这个查询子句。...首先构造起始和结束日期: $from = date('2020-01-01'); $to = date('2020-08-09'); 然后调用查询子句: Reservation::whereBetween...当然了,上面的方法是在SQL中直接进行筛选,如果查询结果限制的条目本身比较少,也能充分利用索引,所以不担心查询的速度,那么我们可以在查询完成后,在返回的 Eloquent Collection 集合上,

3.3K10

Laravel学习记录--Model

->get(['title'])//选择查询 ->all()//取出所有数据 ->all(['title])//选择查询...select 查询子句造成影响。...Eloquent还支持动态作用域,动态作用域指在查询过程动态设置预置过滤器的查询条件,动态作用域与本地作用域类似,都是以scope作为前缀,调用方法也相同,不同的是动态作用域可以通过额外参数指定查询条件...7次循环 该循环先执行1次查询获取表的所有的文章,然后另一个查询获取每一篇文章的作者,因此如果有6个作者,则会执行7次查询,1次是获取文章,剩下的6次获取文章作者。...通过Laravel Debugbar显示的sql语句我们可以很清楚的看到其执行过程 查看数据库 和我们料想得一致,课程id为1的数据被移除,并且新增了课程id为9的记录 sync支持额外数据添加

13.5K20

Laravel 模型关联基础教程详解

Laravel 定义模型关联是每个 Laravel 开发者可能已经做过不止一次的事情。但是在试图实现关联时可能会遇到各种问题。因为 Laravel 有各种各样的关联,你应该选择哪一个?...举个例子,一个 User 模型和一个 Passport 模型会成为一一的关联。一个用户只能拥有一张通行证,同样,一张通行证也只属于一个用户。 让我们看看如何在代码定义这种关联。 <?...user() { return $this- belongsTo(App\User::class); } } 一多 你可以在 Laravel 定义的下一个关联是一多关联。...你可以通过创建迁移文件在 Laravel 创建此中间表。 远程关联 远程一一 has one through 关联通过单个中间关联模型实现。...php $user- passport()- where('active', 1)- orderBy('expiration_date'); 检查关联是否存在 有时候你希望检查模型是否有添加某些关联

5.5K31

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

本文实例讲述了laravel框架数据库操作、查询构建器、Eloquent ORM操作。...分享给大家供大家参考,具体如下: 1、连接数据库 laravel连接数据库的配置文件位于config/database.php,在其中connection字段包含laravel所支持的数据库的配置信息...$query- orderBy('age','desc'); //$order为true时才执行此语句 })- get(); 3.4、排序、分组、限定 //orderByage字段升序...Eloquent默认会管理数据表的创建时间、更新时间,对应数据表的created_at、updated_at字段,你需要在创建表时包含这两个字段。...《php常见数据库操作技巧汇总》 希望本文所述大家基于Laravel框架的PHP程序设计有所帮助。

13.3K51

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

根据单一责任开发原则来讲,在laravel的开发过程每个表都应建立一个model对外服务和调用。...$table = 'users'; } 解析 Laravel的数据操作分两种 DB facade Eloquent ORM 它们除了有各自的特色外,基本的数据操作都是通过 Illuminate\Database...这个文件在你项目目录的 vendor/laravel/framework/src/Illuminate/Database/Query 下,你可以自行去查看。...DB facade 正常情况下你可能会这样写一个操作 DB::table('user')- get(); 这个操作首先经过laravel的门面指向文件,不过它并不在 app.php ,而是通过内核直接加载...《php常见数据库操作技巧汇总》 希望本文所述大家基于Laravel框架的PHP程序设计有所帮助。

1.8K30

Laravel Eloquent 模型关联关系(下)

在前面两篇教程,学院君陆续给大家介绍了 Eloquent 模型类支持的七种关联关系,通过底层提供的关联方法,我们可以快速实现模型间的关联,并且进行关联查询。...从性能上来说,渴求式加载更优,因为它会提前从数据库一次性查询所有关联数据,而懒惰式加载在每次查询动态属性的时候才会去执行查询,会多次连接数据库,性能上差一些(数据库操作主要开销在数据库连接上,所以在开发过程如果想优化性能...学院%'); })->get(); 底层执行的 SQL 查询语句如下: 如果你想进一步过滤出文章标题和评论都包含「Laravel学院」的用户,可以在上述闭包函数通过查询构建器进一步指定: $users...($query) { $query->where('content', 'like', 'Laravel学院%'); })->get(); 无结果过滤 与 has/orHas 方法相对的,还有一...,我们分了三篇的篇幅来介绍 Eloquent 模型的管理关系,回顾一下,主要包含以下内容: 七种关联关系的定义:一一、一多、多多、远层一多、一一的多态关联、一多的多态关联、多多的多态关联;

19.5K30

orm 系列 之 Eloquent使用1

Eloquent ORM 本文会是一个Eloquent的使用教程,在此之前,我们先讲述下怎么搭建环境,完整的系列请查看orm 基础环境的搭建 记录下怎么用docker搭建laravel的环境 新建项目composer...create-project --prefer-dist laravel/laravel eloquent 添加laradock cd eloquent;git init;git submodule...,让phpstorm能自动提示laravel的类。...此处表batch的作用是,我们每次执行migrate操作,如果有新的migrate操作,就会有新的batch产生,然后我们每次执行rollback,会将最大的batch进行回滚。...总结 本文主要是介绍了使用docker来构建laravel的开发环境,同时,我们也介绍了怎么说会用phpstorm来开发laravel,搭建好环境后,主要介绍了Eloquent的Schema Builder

1.7K20

PHP-web框架Laravel-Eloquent ORM(三)

四、查询构建器Laravel框架Eloquent ORM提供了方便的查询构建器,用于构建复杂的查询语句。下面是一些常用的查询构建器方法。...where方法where方法用于添加条件查询,例如:$users = User::where('age', '>', 18)->get();上述代码,查询了年龄大于18岁的所有用户。...总结通过上述文档和示例,我们可以看出Laravel框架Eloquent ORM提供了便捷的对象关系映射功能,可以大大简化开发者的数据库操作。...在使用Eloquent ORM进行开发时,需要注意以下几点:模型类名默认对应的表名是模型类名的复数形式,User模型对应的表名是users,如果需要指定表名可以通过定义$table属性来实现。...关联关系的定义需要在对应的模型类定义,例如一一关联需要在hasOne和belongsTo方法定义,一多关联需要在hasMany和belongsTo方法定义,多多关联需要在belongsToMany

1.5K41
领券