Lavavel数据库操作(一)

我现在才了解到laravel是一个真真正正的重型框架。。。一般我学习框架的时候会首先去瞄一眼源代码,或者至少看一看接口(或虚基类)里面怎么定义参数表的。结果我连源代码的位置都找了半天。数据库方面,最基础的操作的位置居然在composer加载的依赖vendor文件夹内部!我服。
它基本是采用DB门面(这个是什么?喵喵喵)进行数据库操作的。使用的迷之静态方法常常由某__callStatic()“膜”术方法加载而来。
vendor/laravel/framework/src/Illuminate/Database/Connection.php
vendor/laravel/framework/src/Illuminate/Database/ConnectionInterface.php
这两个文件里面包含了很多最基础的数据库操作

支持

目前laravel支持四种数据库系统。我看到的源代码中是通过使用一个迷之工厂模式设计出的。

  • MySQL
  • Postgres
  • SQLite
  • SQL Server

原生sql操作

这个不建议使用,如果有用到的话可以看一眼。(讨厌sql满天飞,很丑,并且担心注入问题)
DB::select($sql);
这个是select语句的原生sql查询写法,insert、delete、update语句同理,非常简单粗暴。
教学手册
如果一定要使用原生语句,还是很建议使用参数绑定,至少安全一点。

使用查询构造器进行增删改查

使用DB门面的table方法,就能返回一个查询构造器了。
DB::table('tablename')->balabalabala....
目前我对它的原理不是很清楚,不过知道的唯一一点就是,查询构造器某种意义上是对PDO的封装,所以暂时不需要考虑特殊字符转义问题,这个已经替我们做好了。
查询构造器的使用方法比较繁杂,老实说我踩了一堆坑,这里留给大家一点东西,供大家一边学一遍查(都是在线的sad)
教学手册
API官方文档(这个真是找的我内牛满面)
使用的例子

(以下从教程手册里提炼

SELECT
  • 获取全部:get()
  • 获取一行:first()
  • 获取一行中某列的值:value('COLUME_NAME')
  • 获取一部分数据:chunk()
  • 获取一列的值列表:lists('COLUME_NAME')

这里贴一下chunk()函数的示例用法
DB::table('users')->chunk(100, function($users) { });
chunk函数用在结果集量很大的时候。第一个参数位每次抓取数据的条数,第二个回调函数里的参数是每次传回的部分结果集。回调函数里可以进行你所想要的操作,当然也可以在你想要停止查找结果集的时候return false来终止这个循环。

剩下的都很简单,可以直接看教学手册
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容