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 相关文章推荐
PHP5/ZendEngine2的改进
Oct 09 PHP
如何使用PHP获取网络上文件
Oct 09 PHP
php验证码实现代码(3种)
Sep 07 PHP
PHP简单实现断点续传下载的方法
Sep 25 PHP
分享PHP计算两个日期相差天数的代码
Dec 23 PHP
php结合web uploader插件实现分片上传文件
May 10 PHP
浅谈php中urlencode与rawurlencode的区别
Sep 05 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
PHP基于接口技术实现简单的多态应用完整实例
Apr 26 PHP
php递归函数怎么用才有效
Feb 24 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
PHP树形结构tree类用法示例
Feb 01 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
PHP使用xmllint命令处理xml与html的方法
2014/12/15 PHP
PHP设置进度条的方法
2015/07/08 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
Mac下php 5升级到php 7的步骤详解
2017/04/26 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
Firefox outerHTML实现代码
2009/06/04 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
js使用原型对象(prototype)需要注意的地方
2017/08/28 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
2017/10/27 jQuery
关于vue状态过渡transition不起作用的原因解决
2019/04/09 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
Elasticsearch实现复合查询高亮结果功能
2019/09/10 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
JavaScript实现点击切换验证码及校验
2021/01/10 Javascript
python爬虫面试宝典(常见问题)
2018/03/02 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
python机器学习实现决策树
2019/11/11 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
委托证明书
2014/09/17 职场文书
办公室主任个人总结
2015/02/28 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL
golang语言指针操作
2022/04/14 Golang
使用python绘制分组对比柱状图
2022/04/21 Python