PHP开发框架Laravel数据库操作方法总结


Posted in PHP onSeptember 03, 2014

一、读/写连接

有时您可能希望使用一个SELECT语句的数据库连接,,另一个用于插入、更新和删除语句。Laravel使这微风,将始终使用正确的连接是否使用原始查询,查询生成器或雄辩的ORM。

如何读/写连接应该配置,让我们看看这个例子:

'mysql' => array('read' => array('host' => '192.168.1.1'),'write' => array('host' => '196.168.1.2'),'driver' => 'mysql','database' =>'database','username' => 'root','password' => '','charset' => 'utf8','collation' => 'utf8_unicode_ci','prefix' => '')

注意,两个键添加到配置阵列:读和写。这两个键有数组值包含一个关键:主机。其余的读写数据库选项从主mysql连接将合并后的数组。所以,我们只需要将物品放入读取和写入数组如果我们希望覆盖主要数组中的值。所以,在这种情况下,192.168.1.1将被用作“读”连接,while192.168.1.2将被用作“写”连接。数据库凭证、前缀、字符集和所有其他选项在主mysql数组将跨两个共享连接。

二、运行查询

一旦你已经配置了数据库连接,你可以使用DB运行查询类。

运行一个Select查询

$results = DB::select('select * from users where id = ?', array(1));

结果的选择方法总是返回一个数组。

运行一个Insert语句

DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));

运行一个更新语句

DB::update('update users set votes = 100 where name = ?', array('John'));

运行一个Delete语句
DB::delete('delete from users');

注意:update和delete语句返回的行数的影响操作。

运行一个通用声明

DB::statement('drop table users');

查询事件监听

你可以查询事件监听使用DB::听方法:

DB::listen(function($sql, $bindings, $time){ //});

三、数据库事务

运行在一个数据库事务的一组操作,您可以使用事务方法:

 DB::transaction(function(){ DB::table('users')->update(array('votes' 

=> 1)); DB::table('posts')->delete();});

注意:在事务抛出的任何异常关闭将导致自动事务将回滚

有时你可能需要开始一个事务:

DB::beginTransaction();

你可以通过回滚事务回滚方法:
DB::rollback();

最后,您可以通过提交方法:提交一个事务
DB::commit();

四、访问连接

当使用多个连接,你可以访问它们通过DB::连接方法:

$users = DB::connection('foo')->select(...);

你也可以访问原始的、潜在的PDO实例:
$pdo = DB::connection()->getPdo();

有时你可能需要重新连接到一个给定的数据库:
DB::reconnect('foo');

如果你需要断开从给定的数据库将超过底层PDO实例'smax_connections限制,使用断开连接方法:
DB::disconnect('foo');

五、查询日志

默认情况下,Laravel日志保存在内存的所有查询运行当前的请求。然而,在某些情况下,例如当插入的行数,这可能会导致应用程序使用多余的内存。禁用日志,你可以使用disableQueryLog方法:

DB::connection()->disableQueryLog();

o得到一组执行的查询,您可以使用getQueryLog方法:
$queries = DB::getQueryLog();
PHP 相关文章推荐
用PHP编写和读取XML的几种方式
Jan 12 PHP
提高PHP性能的编码技巧以及性能优化详细解析
Aug 24 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
php实现学生管理系统
Mar 21 PHP
Zend Framework上传文件重命名的实现方法
Nov 25 PHP
Laravel中任务调度console使用方法小结
May 07 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 PHP
php使用event扩展的io复用测试的示例
Oct 20 PHP
Fedora下安装php Redis扩展笔记
Sep 03 #PHP
使用YUI+Ant 实现JS CSS压缩
Sep 02 #PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 #PHP
PHP高级编程实例:编写守护进程
Sep 02 #PHP
php输入流php://input使用浅析
Sep 02 #PHP
php获取URL中带#号等特殊符号参数的解决方法
Sep 02 #PHP
PHP中提问频率最高的11个面试题和答案
Sep 02 #PHP
You might like
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
浅谈laravel-admin的sortable和orderby使用问题
2019/10/03 PHP
JavaScript初学者需要了解10个小技巧
2010/08/25 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
javascript检测两个数组是否相似
2015/05/19 Javascript
js控制TR的显示隐藏
2016/03/04 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
JS中的Replace()传入函数时的用法详解
2017/09/11 Javascript
Node.js上传文件功能之服务端如何获取文件上传进度
2018/02/05 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
Python标准模块--ContextManager上下文管理器的具体用法
2017/11/27 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
Django结合ajax进行页面实时更新的例子
2019/08/12 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
Windows环境下Python3.6.8 importError: DLLload failed:找不到指定的模块
2020/11/01 Python
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
如何进行有效的自我评价
2013/09/27 职场文书
配件采购员岗位职责
2013/12/03 职场文书
网管求职信
2014/03/03 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
监守自盗观后感
2015/06/10 职场文书
工作感想范文
2015/08/07 职场文书
javascript的var与let,const之间的区别详解
2022/02/18 Javascript