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 相关文章推荐
php中处理mysql_fetch_assoc返回来的数组 不用foreach----echo
May 04 PHP
解析php mysql 事务处理回滚操作(附实例)
Aug 05 PHP
php数组合并的二种方法
Mar 21 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
PHP+Ajax实现验证码的实时验证
Jul 20 PHP
php接口技术实例详解
Dec 07 PHP
详解php命令注入攻击
Apr 06 PHP
docker-compose部署php项目实例详解
Jul 30 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 PHP
PHPExcel实现的读取多工作表操作示例
Apr 14 PHP
PHP常用字符串函数用法实例总结
Jun 04 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
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
2010/06/11 PHP
php cli 小技巧
2013/06/03 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
php截取视频指定帧为图片
2016/05/16 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
2019/01/23 PHP
js之onload事件的一点使用心得
2013/08/14 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
jQuery实现底部浮动窗口效果
2016/09/07 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
socket.io学习教程之基础介绍(一)
2017/04/29 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
JS如何实现网站中PC端和手机端自动识别并跳转对应的代码
2020/01/08 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
Python内置的字符串处理函数整理
2013/01/29 Python
Python批量修改文件后缀的方法
2014/01/26 Python
python列表去重的二种方法
2014/02/14 Python
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
Django rest framework实现分页的示例
2018/05/24 Python
python后端接收前端回传的文件方法
2019/01/02 Python
Python实现Restful API的例子
2019/08/31 Python
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
如何在Canvas中添加事件的方法示例
2019/05/21 HTML / CSS
竞选部门副经理的自荐书范文
2014/02/11 职场文书
本科毕业生自荐信
2014/05/26 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
初中生300字旷课检讨书
2014/11/19 职场文书
放假通知怎么写
2015/08/18 职场文书