您的位置 首页 php

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

引言 我们推荐使用 laravel 的 eloquent orm 模型操作数据库表,因为特性更为丰富,组装更为灵活,在编程层面操作数据的来来去去非常直观。而有些场景不可避免地与原生交互,我们本期就来梳理一下 DB 门面相关的那些方法。 学习时间 系统提供了 DB 门面用于原生的 SQL 操作,在程序内引入下面的类:use IlluminateSupportFacadesDB; 该类的定义很简单,标准的门面注册方法:class DB extends Facade{protected static function getFacadeAccessor ( ){return ‘db’;}} 仅实现了 getFacadeAccessor 方法,这些类处于同一个命名空间下的 Facade.php 文件内。DB 门面既可以使用 query builder 的链式操作,也可以用于执行原生查询。举几个例子。比如删除 users 表:DB::statement ( ‘drop table users’ ) ; 带参数绑定的 SQL 查询语句:DB::select ( ‘select * from contacts where validated = ?’, [ 1 ] ) ; 或者使用链式操作,获取所有满足条件的记录:$users = DB::table ( ‘users’ ) ->get ( ) ; 当然了,还有经常用到的多表联合查询,复杂的查询过滤条件:DB::table ( ‘users’ )->join ( ‘contacts’, function ( $join ) {$join->on ( ‘users.id’, ‘=’, ‘contacts.user_id’ ) ->where ( ‘contacts.type’, ‘donor’ ) ;->get ( ) ;CRUD 上一节是一些简单示例,下面我们说一说增删改查的用法。先说查询语句,如果在数据库优化上做的比较好的一些 SQL 固定写法,可以使用原生方法固化下来。比如简单的:$users = DB::select ( ‘select * from users’ ) ; 该方法会返回一个标准对象的集合。扩展一下,带有查询条件的 SQL 原生语句,为了防止 SQL 注入,使用参数绑定的方式:$usersOfType = DB::select ( ‘select * from users where type = ?’, [ $type ] ) ; 当然也可以使用 PDO 常用的方式占位:$usersOfType = DB::select ( ‘select * from users where type = :type’, [ ‘type’ => $userType ] ) ; 插入新数据,其实与上述的带有占位符参数绑定的 SQL 查询语句类似,只是 SQL 语法不同而已: 更新数据也是一样的:$countUpdated = DB::update ( ‘update contacts set status = ? where id = ?’, [ 1, $id ] ) ; 当然了,删除语句仅仅需要 where 子句的条件参数绑定,其他与查询 select 无异:$countDeleted = DB::delete ( ‘delete from contacts where archived = ?’, [ 1 ] ) ; 写在最后 本文通过对 laravel DB 门面的增删改查用法,向大家展示了基本的参数绑定的用法。一般我们不推荐使用原生 SQL 语句操作数据库,提倡大家把数据库操作集中到模型层,充分利用 eloquent orm 的性能。Happy coding :- ) 我是 @程序员小助手,持续分享编程知识,欢迎关注。

文章来源:智云一二三科技

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

文章地址:https://www.zhihuclub.com/77394.shtml

关于作者: 智云科技

热门文章

网站地图