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()
{
//
}
}
Laravel5.1 数据库--DB运行原生SQL的更多相关文章
- jDialects:一个从Hibernate抽取的支持70多种数据库方言的原生SQL分页工具
jDialects(https://git.oschina.net/drinkjava2/jdialects) 是一个收集了大多数已知数据库方言的Java小项目,通常可用来创建分页SQL和建表DDL语 ...
- Django中使用mysql数据库并使用原生sql语句操作
Django自身默认使用sqlite3这个轻量级的数据库,但是当我们开发网站时,sqlite3就没有mysql好,sqlite3适合一些手机上开发使用的数据库. 准备的软件mysql数据库,版本5.7 ...
- Hibernate运行原生sql并将查询的结果转化为对象
原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.下面来描述如何使用这个API进行查询.标量查询(Scalar queri ...
- 数据库每分钟运行监控SQL
每1分钟运行一次,记录正在运行的SQL,监控数据 放在ReportServer库的t_WhoIsActive表中,保留最近30天的数据! USE [ReportServer] GO /****** O ...
- Laravel5.1 数据库-查询构建器
今儿个咱说说查询构建器.它比运行原生SQL要简单些,它的操作面儿也是比较广泛的. 1 查询结果 先来看看它的语法: public function getSelect() { $result = DB ...
- Django ORM 使用原生 SQL
使用原生sql的 方法 : raw # row方法:(掺杂着原生sql和orm来执行的操作) res = CookBook.objects.raw('select id as nid from epo ...
- MySQL 数据库性能优化之SQL优化
前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. 优化目标 ...
- MySQL 数据库性能优化之SQL优化【转】
优化目标 减少 IO 次数IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑, ...
- 数据库入门之运行原始 SQL 查找
数据库入门之运行原始 SQL 查找 一旦你设置好了数据库连接,就可以使用 DB facade 来进行查找.DB facade 提供每个类型的查找方法:select.update.insert.dele ...
随机推荐
- 10道典型的JavaScript面试题
问题1: 作用域(Scope) 考虑以下代码: (function() { ; })(); console.log(b); 上述代码会打印出5.这个问题的陷阱就是,在立即执行函数表达式(IIFE)中, ...
- [转载] 在Linux中,开机自动运行普通用户的脚本程序
FROM:http://blog.csdn.net/sinboy/article/details/2466225 FROM:http://www.2cto.com/os/201006/50680.ht ...
- Kafka 集群搭建 (自用)
Zookeeper集群搭建 1.软件环境 (3台服务器-测试环境) 192.168.56.9 192.168.56.6 192.168.56.7 1.Linux服务器一台.三台.五台.(2*n+1), ...
- 搭建MongoDB分片集群
在部门服务器搭建MongoDB分片集群,记录整个操作过程,朋友们也可以参考. 计划如下: 用5台机器搭建,IP分别为:192.168.58.5.192.168.58.6.192.168.58.8.19 ...
- 【招聘App】—— React/Nodejs/MongoDB全栈项目:消息列表
前言:最近在学习Redux+react+Router+Nodejs全栈开发高级课程,这里对实践过程作个记录,方便自己和大家翻阅.最终成果github地址:https://github.com/66We ...
- Centos 7 进入单用户模式图文详解
由于昨晚做了一个很傻X的事情,所以有幸进入了CentOS 7 的单用户模式. CentOS 7 在进入单用户的时候和6.x做了很多的改变, 下面让我们来看看如何进入单用户模式. 如何进入CentOS ...
- 2015 Multi-University Training Contest 1记录
1001 OO's Sequence 分析: 对于例子,能够得到,我们要求的是(1,1)(1,2)(1,3)(1,4)(1,5)(2,2)(2,3)(2,4)(2,5)(3,3)(3,4)(3,5)( ...
- 读写锁pthread_rwlock_t的使用(转)
读写锁是用来解决读者写者问题的,读操作可以共享,写操作是排他的,读可以有多个在读,写只有唯一个在写,同时写的时候不允许读. 具有强读者同步和强写者同步两种形式 强读者同步:当写者没有进行写操作,读者就 ...
- 复选框input:checkbox
复选框 CreateTime--2017年6月5日14:04:55Author:Marydon 五.复选框 (一)语法 <input type="checkbox" /& ...
- java 线程的几种状态(转载)
java thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在 ...