Lavavel数据库操作(一)

作者: 满堂风来 | 来源:发表于2016-10-25 01:04 被阅读0次

    我现在才了解到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来终止这个循环。

    剩下的都很简单,可以直接看教学手册

    相关文章

      网友评论

        本文标题:Lavavel数据库操作(一)

        本文链接:https://www.haomeiwen.com/subject/bfqruttx.html