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

如何在Laravel (5.*)中使用普通SQL查询?或者我应该学习ORM?

在Laravel (5.*)中,你可以选择使用普通SQL查询或学习使用ORM(对象关系映射)。

如果你选择使用普通SQL查询,你可以通过在Laravel中使用DB门面(Facade)进行数据库操作。首先,在你的控制器或模型中引入DB门面:

代码语言:txt
复制
use Illuminate\Support\Facades\DB;

然后,你可以使用select方法执行SQL查询,如下所示:

代码语言:txt
复制
$results = DB::select('SELECT * FROM users WHERE active = ?', [1]);

这里的select方法接受两个参数,第一个参数是SQL查询语句,第二个参数是查询参数(可选)。你可以使用?占位符来避免SQL注入,并通过数组将查询参数传递给方法。

如果你需要执行其他类型的查询,比如插入、更新或删除数据,可以使用insertupdatedelete方法。

另外,你也可以使用statement方法执行原生SQL语句:

代码语言:txt
复制
DB::statement('DROP TABLE users');

使用普通SQL查询的优势在于,你可以直接使用SQL语句来操作数据库,特别适合对于复杂查询和性能优化的需求。然而,需要注意的是,使用普通SQL查询可能会导致代码的可读性和可维护性降低。

另一种选择是学习使用ORM,Laravel提供了Eloquent ORM作为默认的ORM。ORM将数据库表映射为对象,简化了数据库操作,提高了代码的可读性和可维护性。

你可以定义一个模型来表示数据库中的表,使用Eloquent提供的方法进行查询和操作数据。以下是一个使用Eloquent进行查询的示例:

代码语言:txt
复制
namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    protected $table = 'users';
}

然后,在你的控制器或其他地方,你可以使用该模型来执行查询:

代码语言:txt
复制
$users = User::where('active', 1)->get();

这里的where方法用于添加查询条件,get方法用于执行查询并获取结果。你还可以使用其他方法,如findfirstcreate等来满足不同的查询和操作需求。

ORM的优势在于它提供了一种面向对象的方式来操作数据库,将数据库操作与业务逻辑分离,并提供了更加优雅和简洁的查询语法。ORM还提供了关联关系、模型事件等功能,方便处理复杂的业务场景。

总而言之,选择使用普通SQL查询还是学习使用ORM取决于你的需求和个人偏好。如果你对SQL较熟悉,有复杂的查询需求或需要进行性能优化,可以使用普通SQL查询。如果你更喜欢面向对象的方式来操作数据库,并希望提高代码的可读性和可维护性,建议学习使用Laravel提供的Eloquent ORM。

在腾讯云中,推荐的相关产品是TDSQL-C,它是一种高性能、高可用的MySQL数据库服务。你可以通过以下链接了解更多信息:TDSQL-C产品介绍。请注意,本答案不涉及提及其他云计算品牌商。

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

相关·内容

laravel与thinkphp之间的区别与优缺点

3、Laravel框架提供了大量的闭包 作为菜鸟的目前只使用了use方法,即如何在函数内部使用外层变量。...8、建表 Laravel在数据库建表上有自己独立内置的结构,可以完全不用借助原生SQL语句或者SQLyogEnt、Navicat这样的建表工具进行数据库的建立,增删改查和数据交互。...想这可能是它牢牢占据NO.1的一大亮点,在ThinkPHP则需要我们借助SQL语句或者建表工具去逐步完善数据。 8.1、首先我们需要建立模型:用的是gitbash。...无须担心,从githubpull下项目后在数据表里直接修改,只需要用: php artisan migrate:refresh 9、ORM 在介绍建表时已经使用了创建模型的命令: php artisan...本人在实际使用也实实在在的感受到了通过创造模型对数据表操作带来的便利,譬如:批量赋值,跨表查询,删除模型和软删除,模型关联,当然这些在TP框架也可以利用模型实现。

5.6K20

Laravel和Thinkphp有什么区别,哪个框架好用

3、Laravel框架提供了大量的闭包 作为菜鸟的目前只使用了use方法,即如何在函数内部使用外层变量。...8、建表 Laravel在数据库建表上有自己独立内置的结构,可以完全不用借助原生SQL语句或者SQLyogEnt、Navicat这样的建表工具进行数据库的建立,增删改查和数据交互。...想这可能是它牢牢占据NO.1的一大亮点,在ThinkPHP则需要我们借助SQL语句或者建表工具去逐步完善数据。 8.1、首先我们需要建立模型:用的是gitbash。...无须担心,从githubpull下项目后在数据表里直接修改,只需要用: php artisan migrate:refresh 9、ORM 在介绍建表时已经使用了创建模型的命令: php artisan...本人在实际使用也实实在在的感受到了通过创造模型对数据表操作带来的便利,譬如:批量赋值,跨表查询,删除模型和软删除,模型关联,当然这些在TP框架也可以利用模型实现。

5.9K20

为什么 Laravel 这么优秀?

这篇文章使用的 Demo 是最新版的 Laravel 10.x 以及 PHP 8.2。...ID 为 1 的课程及它所关联的教师及学生;这将产生 3 条 SQL操作,其中还包含了一条跨中间表(course_student)的查询,而这过程我们不需要做任何操作,Laravel 会自动根据你...可以高效的使用 Eloquent ORM 实现各种查询;如上面的例子我们使用了 withCount 来查询课程的学生数量、用 with 加载课程对应的教师;还可以指定生成的 SQL 查询只包含某几个字段...; CacheServiceProvider 会向容器中注册 Cache 对象,后续在使用 Cache::get 时就使用的是这里注册的 Cache 对象,在注册阶段不应该向容器获取值,因为此时服务可能还没有...Laravel 还有很优秀的设计没有在这篇文章中指出来,如果你对 Laravel 感兴趣或者想写出一手还不错的代码,真的建议你看一看 Laravel 的源码,看一看他的设计,觉得这些设计在所有的语言中都是通用的

18510

Laravel框架是什么

微信图片_20191126140630.jpg Laravel是一个相对较新的PHP框架,它也是目前流行的PHP框架。学习laravel非常容易,因为每个版本都有完整的文档。...Laravel还有一个强大的模板引擎,它使开发人员更容易执行常见的任务,身份验证、缓存、会话、restful路由和队列。 它拥有一个巨大的生态系统,拥有即时托管和部署平台。...微信图片_20191126141231.jpg Laravel框架的主要特点: 1.模块化包装 2.依赖管理器完全基于composer 3.精湛的自动加载器 4.优雅的ORM 5.查询构建器作为潜在的ORM...替代 6.PostgreSQL,MySQL,SQL Server平台支持您的数据库 7.简化的叶片模板引擎 8.比以前更快的自动化 9.内置身份验证机制和缓存机制 10.一流的路由功能和选项 11.无与伦比的质量会话控制...它允许用户创建与所提到的框架相关的项目(例如,Laravel安装中使用的项目)。借助Composer可以轻松安装第三方库。所有依赖项都在composer.json文件记录,该文件放在源文件夹

2.8K30

Laravel 非常规教程之0 引入篇

主要受众应该是和老高一样喜欢折腾的家伙们吧! 常规教程在这里Laravel 5.2 中文文档,在此要十分感谢Laravel 学院!没有他laravel在国内也不会这么普及(老高)。...当然不要忘了Laravel还有一个子框架叫Luman,这个路人框架也值得学习! ps.Laravel老高去年就开始关注了,因为太忙(懒)了,所以一直没有深入学习这个框架。不过不要紧,该来的还是会来的。...laravel严重依赖的PHP的包管理系统Composer,是好事也是坏事,但总归是好事!(到底在说啥?)...(ORM对业务开发来说简直是福利,老高觉得过早写死SQL属于过早优化,是不科学的开发方式) 听到了ORM老高真是一把鼻涕一把泪啊,好久都没有用过了ORM了,虽然手写SQL也有好处,但是这个在业务开发初期...这里抛砖引玉提一下,ORM这里常理来讲应该对应MVC的M,意思是模型,用简单的话将,就是讲一张表映射成一个对象,这样理解是有误的,当业务复杂的时候,这样的定义就不在适用,需要引入一层新的业务层(名字随便

88140

ORM哪家强?java,c#,php,python,go 逐一对比, 网友直呼:全面客观

前言 最近一段时间,使用golang开发了一个新的ORM库。 为了让这个库更好用,比较研究了各语言的主流ORM库,发现有一些语言的ORM库确实很好用,而有另外一些语言的库那不是一般的难用。...逻辑上也不太复杂,但你是否还有勇气说,写出来的sql绝对正确。估计比例不超过40% 如上面的sql所示,SQL编写难题在于以下几方面。 要保证字段正确 应该有的字段不能少,不应该有的字段不能多。...要特别注意sql语法 例如你在查询的时候必须写from,绝对不能误写成form,但是在实际开发过程,很容易就打错了。 这种错误,也只有运行的时候才会告诉你语法错了。...orm了,不会有SQL编写难题,支持code first,并且不需要额外的工作 如果你使用php语言,请选择 laravel 而不是 symfony, 反正都有SQL编写难题,那就挑个容易使用的...如果有说的不合适,或者不对的地方,请在下面狠狠的批评

2.6K91

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

Laravel提供的 eloquent orm 使用面向对象的方式封装了PDO数据库操作,使用起来非常方便,对于复杂的SQL操作也游刃有余。...学习时间 比如对于业务逻辑,User模型在筛选查询的时候有非常多的限制条件,类似下面这样的: ? 这一堆令人头皮发麻的where,还不算变态。...更厉害的是加上多表联合查询,那就真的是 sql 的噩梦了。然而对于laravel而言,这些全过程都可以拼装,你只需要关注筛选和操作,剩下的组装sql的过程,laravel都帮你做好了。...SQL 学习了全局作用域,那么本地作用域就更好理解了。...调用的使用选用就可以了: $users = User::active()->that()->get(); 写在最后 为了代码能够最大程度的复用,laravel也是很拼了。就这个本地作用域,给五颗星。

2.8K10

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

引言 今天说一个细分的需求,在模型或者使用laravel提供的 Eloquent ORM 功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写? 本文通过几个例子,为大家梳理一下。...学习时间 假设有一个模型 Reservation,我们查询某个日期的预订条目数,首先构造日期字符串,使用内置函数: $now = date('Y-m-d'); 返回当前日期。...你可以使用 whereBetween 这个查询子句。...('reservation_from', [$from, $to])->get(); 这样就返回SQL查询的 BETWEEN ......当然了,上面的方法是在SQL中直接进行筛选,如果查询结果限制的条目本身比较少,也能充分利用索引,所以不担心查询的速度,那么我们可以在查询完成后,在返回的 Eloquent Collection 集合上,

3.3K10

Laravel系列4.2】查询构造器

其实就像我们上篇文章中学习过的使用原始 SQL 语句的方式来操作数据库一样,查询构造器这个东西就是在这个原始操作的基础上为我们封装了一系列的接口,能够让我们方便地来操作数据库。...我们又发现了一个设计模式在 Laravel 框架的应用,意外不意外,惊喜不惊喜! 连表查询 普通的连表查询使用还是非常简单的,也就不多说了,下面的代码也有演示。...`sex` }); 代码第一段的连表查询就是最普通的一个外键的查询,如果要实现多个外键连表的话,就需要使用第二种方法。...注意看我注释掉的第二种多条件的写法,在这里面使用了 orOn() 和 where() ,大家可以打开测试一下,结果是如下的 SQL 语句。...这篇文章,我们又看到了 建造者模式 的应用,以及了解到了 链式调用 是如何实现的。而且更重要的是,我们也确认了 查询构造器 确实在底层还是使用的 原始SQL 的方式执行的。

16.8K10

3分钟短文:Laravel 使用DB门面操作原生SQL

引言 我们推荐使用laravel的eloquent orm 模型操作数据库表, 因为特性更为丰富,组装更为灵活,在编程层面操作数据的来来去去非常直观。..., [1]); 或者使用链式操作,获取所有满足条件的记录: $users = DB::table('users')->get(); 当然了,还有经常用到的多表联合查询,复杂的查询过滤条件: DB::table...先说查询语句, 如果在数据库优化上做的比较好的一些SQL固定写法,可以使用原生方法固化下来。...扩展一下,带有查询条件的SQL原生语句, 为了防止SQL注入,使用参数绑定的方式: $usersOfType = DB::select('select * from users where type =...一般我们不推荐使用原生SQL语句操作数据库,提倡大家把数据库操作集中到模型层, 充分利用eloquent orm的性能。

2.1K20

Laravel为什么会成为最优雅的PHP框架?

强大的ORM库Eloquent LaravelORM库Eloquent是其优雅性的又一重要体现。Eloquent提供了一种直观而强大的数据库操作方式,使得开发者可以像操作对象一样操作数据库。...Laravel的路由系统不仅易于理解和使用,还提供了丰富的路由参数和约束功能,帮助开发者构建出更加灵活和安全的Web应用程序。 4....简洁高效的模板引擎Blade Laravel的模板引擎Blade提供了简洁而强大的语法,支持布局、视图继承、部分视图等功能。Blade的语法易于学习使用,同时性能优越。...它允许开发者在HTML嵌入PHP代码,而无需担心代码的混乱和难以维护。通过Blade,开发者可以更加专注于应用程序的业务逻辑,而无需在视图层面花费过多时间。 5....安全性与稳定性 Laravel内置了一系列安全措施,SQL注入防护、CSRF防护等,帮助开发者构建安全的Web应用。Laravel还提供了详细的错误处理和日志记录机制,帮助开发者及时发现并解决问题。

8710

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

其实,Laravel 的 Eloquent ORM 也是 Active Record 的实现,这也是现在 ORM 的主流。...这个我们以后再详细学习 MySQL 相关的文章时再深入的学习。至于这件事是不是真的,也只是仅有一个印象了,如果说得不对,也请大家不要见怪,后面学习到的时候我们再来纠正。...就是我们上面这条 SQL 语句的查询条件。它就是去查询 db_sex 表里面的数据,然后把获得的结果对象返回回来。至于这个 ?...相信一直陪伴着学习的小伙伴马上就清楚了,【后期静态绑定在PHP使用】https://mp.weixin.qq.com/s/N0rlafUCBFf3kZlRy5btYA 好好复习一下吧。...总结 今天,我们学习的内容是 ORM 的概念以及基础的模型的使用,另外还加了一个关联功能的源码分析。

8.8K20

Laravel拼装SQL查询的最佳实现

学习时间 对于数据库DBA可能更习惯从SQL的角度出发,从SQL现有的语言结构和功能上解决问题。...比如查询一个product表,要求查询条件,product_catagory 表的某些字段存在才能才回。 写多了容易无解,直接上SQL: ?...大家注意那个 IN 子句,其实是一个查询结果集,从另个表返回的。 写SQL真的很伤神,不如用框架自带的orm,操作起来非常人性化,拼装也很简单。那就抛出一个问题,Laravel如何实现上述的子查询?...写在最后 本文通过一个SQL语句查询Laravel的实现方式,解释了laravel在拼装SQL查询时的自由度,使用起来非常灵活。...对于固定的查询方式,或者经过优化的SQL语句,你大可直接发送给Laravel直接运行以便提高效率。

3.7K10

Laravel系列4.1】连接数据库与原生查询

连接数据库与原生查询 在 PHP 的学习,数据库,也就是 MySQL 就像它的亲兄弟一样,永远没法分家。同理,在框架,数据库相关的功能也是所有框架必备的内容。...Laravel 框架的 DB 和 ORM 是两个不同的组件,关于 ORM 的概念,我们也将在相关的学习中了解到,但是现在我们先从简单的普通查询学起。...从 options 这个参数里面,我们可以看出,Laravel 默认使用的是 PDO 连接的数据库,也没有研究在 Laravel 如何使用 mysqli 进行连接,因为 PDO 确实已经是事实的连库标准了...原生查询 接下来,我们就学习怎么使用原生 SQL 语句进行数据库操作。...没错,前面也说过,本身 Laravel 的数据库操作就是使用的 PDO 的,不记得的小伙伴可以移步 【PHP的PDO操作学习(四)查询结构集】https://mp.weixin.qq.com/s/dv-lnEGV0JlGsjy4rl_jkw

3.2K50

3分钟短文 | Laravel同时连接多个数据库,你用啥办法?

引言 在巩固了基础知识之后,我们把目标转向框架的学习Laravel 是一个全球流行的框架,开发者和使用者都比较活跃,周边有许多库,和第三方资源均提供了支持。...今天说一下,如何在框架里同时连接多个数据库? 学习时间 为什么需要连接多个数据库呢?因为,应用程序和数据库有可能不在同一台服务器。而数据库服务器,并不能包含所有的业务表。...一般我们在 .env 文件内指定本地或者线上使用的配置项。这样做比较灵活,很容易区分出不同的设置。...,使用原生的方式,需要明确指定从某个连接操作sql,需要这样写: $users = DB::connection('mysql2')->select(...); 当然了,我们不推荐在程序内进行原生sql...写在最后 本文通过多种方法,演示了Laravel从数据库连接配置,到程序内使用的方方面面。还没有体验这个框架的同学,你真的值得一试了。 Happy coding :-)

1.3K10

Mybatis01入门+使用和配置+面试题mybatis与hibernate的区别+ssm与ssh2开发对比

何在项目中添加mybatis支持 4.ssm与ssh2开发对比:Struts2与Spring MVC  Spring MVC  5....) 1.2 MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。...MyBatis使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库的记录。...hql查询,但功能还是不及sql强大,见到报表等变态需求时,hql查询要虚,也就是说hql查询是有局限的;hibernate虽然也支持原生sql查询,但开发模式上却与orm不同,需要转换思维,因此使用上有些不方便...内置的日志工厂提供日志功能,具体的日志实现有以下几种工具:       SLF4J、Apache Commons Logging 、Log4j 2 、Log4j 、JDK logging       使用

30820

Laravel框架关键技术解析

query()方法(new static)->newQuery(); F.Laravel使用的其他新特性 1.trait 优先级:当前类的方法会覆盖trait的方法,trait的方法会覆盖基类的方法...5.回调函数绑定的就是一个回调函数,实例对象服务绑定的是一个实例对象 6.回调函数的绑定还分为两种: 普通绑定每次生成该服务的实例对象时都会生成一个新的实例对象,也就是说在程序的生命周期中,可以同时生成很多个这种实例对象...(\Illuminate\Database\Query\Builder)实例封装了数据库连接实例、请求语法实例和结果处理实例,这里类的实例提供了统一的接口方法供查询构造器实例使用 5.查询构造器使用阶段...: SQL语句准备阶段,Illuminate\Database\Query\Grammars SQL语句执行阶段,Illuminate\Database\Connection C.Eloquent ORM...1.两个阶段 Eloquent ORM查询构造器的生成,Illuminate\Database\Eloquent\Model::newQuery() 操作命令的执行,Illuminate\Database

11.9K20

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

本文实例讲述了laravel框架数据库操作、查询构建器、Eloquent ORM操作。...分享给大家供大家参考,具体如下: 1、连接数据库 laravel连接数据库的配置文件位于config/database.php,在其中connection字段包含laravel所支持的数据库的配置信息...而且通过PDO绑定的方式避免SQL注入攻击,在使用查询构建器时不必考虑过滤用户输入。...,即将数据库的数据按照对象的形式进行组织,可以便于面向对象的程序进行数据库操作,之前在学习mongoDB时使用过mongoose ORM组织mongoDB ,当时还没有意识到这是orm。...Eloquent ORM本质上是查询构建器,因此上面查询构建器所使用的方法Eloquent都可以使用

13.3K51
领券