Laravel5.1 框架数据库操作DB运行原生SQL的方法分析


Posted in PHP onJanuary 07, 2020

本文实例讲述了Laravel5.1 框架数据库操作DB运行原生SQL的方法。分享给大家供大家参考,具体如下:

Laravel操作数据库有三种:DB原生SQL、构建器、Model。这三种依情况而决定使用哪种更合适。

那么今儿咱就从DB原生SQL说起:

1 用DB门面原生SQL语句操作

用DB门面操作的话呢 无非就是:insert、select、update、delete 另外附加一个statement(通用语句 比如drop之类的)。

 1.1 insert

public function getInsert()
  {
    DB::insert('INSERT INTO articles (title, body)VALUE(?, ?)', ['learn laravel', 'balablalabalabla']);
  }

insert方法接受两个参数 第一个参数呢 就是原生的SQL语句,第二个参数是一个数组 对应的sql语句中的?

 1.2 select

public function getArticles(){
    $articles = DB::select('SELECT * FROM articles WHERE title=:title', ['title' => 'learn laravel']);
    foreach ($articles as $article){
      echo "<p>$article->id</p>";
      echo "<p>$article->title</p>";
      echo "<p>$article->body</p>";
    }
  }

我们的占位符不仅仅是? 也可以用":name" 来表示,对应的数组就是一对儿一对儿的键值。

1.3 update

public function getUpdate()
  {
    $affected = DB::update('UPDATE articles SET title=:title,body=:body WHERE id=:id',['title' => 'laravel database', 'body' => 'balabala', 'id' => 1]);
    echo $affected;
  }

update方法还返回了一个affected 这是受到影响的总行数。

1.4 delete

public function getDelete()
  {
    $affected = DB::delete('DELETE FROM articles WHERE id=:id', ['id' => 2]);
    echo $affected;
  }

1.5 statement

public function getDrop()
  {
    DB::statement('DROP TABLE articles');
  }

2 监听查询

我们可以用 listen方法 监听每一次操作数据库动作,这样我们就可以用于 记录日志啊 调试啊什么的:

class AppServiceProvider extends ServiceProvider
{
  /**
   * Bootstrap any application services.
   *
   * @return void
   */
  public function boot()
  {
    DB::listen(function($sql, $bindings, $time){
      // $sql   = 查询语句
      // $bindings = 绑定的键和值 数组类型
      // 所用的时间
    });
  }
  /**
   * Register any application services.
   *
   * @return void
   */
  public function register()
  {
    //
  }
}

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
Discuz 5.0 中读取纯真IP数据库函数分析
Mar 16 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
Dec 02 PHP
基于MySQL体系结构的分析
May 02 PHP
探讨:如何编写PHP扩展
Jun 13 PHP
PHP设置一边执行一边输出结果的代码
Sep 30 PHP
PHP读取RSS(Feed)简单实例
Jun 12 PHP
destoon二次开发模板及调用语法汇总
Jun 21 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
PHP中的print_r 与 var_dump 输出数组
Jun 13 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
PHP+mysql防止SQL注入的方法小结
Apr 27 PHP
Laravel5.1 框架表单验证操作实例详解
Jan 07 #PHP
PHP字符串与数组处理函数用法小结
Jan 07 #PHP
Laravel5.1 框架响应基本用法实例分析
Jan 04 #PHP
Laravel5.1 框架Request请求操作常见用法实例分析
Jan 04 #PHP
Laravel5.1 框架Middleware中间件基本用法实例分析
Jan 04 #PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 #PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 #PHP
You might like
PHP5多态性与动态绑定介绍
2015/04/03 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
2015/12/14 PHP
JavaScript 继承详解(二)
2009/07/13 Javascript
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
js获取url参数值的两种方式
2013/09/10 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
详解JS中的this、apply、call、bind(经典面试题)
2017/09/19 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
flask入门之文件上传与邮件发送示例
2018/07/18 Python
django session完成状态保持的方法
2018/11/27 Python
详解如何管理多个Python版本和虚拟环境
2019/05/10 Python
python-pyinstaller、打包后获取路径的实例
2019/06/10 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
2019/10/23 Python
Python 求数组局部最大值的实例
2019/11/26 Python
python实现智能语音天气预报
2019/12/02 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
jupyter note 实现将数据保存为word
2020/04/14 Python
想学画画?python满足你!
2020/12/24 Python
HTML5 Canvas 实现K线图的示例代码
2019/12/23 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
大三自我鉴定范文
2013/10/05 职场文书
服务标语大全
2014/06/18 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
骨干教师考核评语
2014/12/31 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
迁徙的鸟观后感
2015/06/09 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL