laravel笔记-数据库(配置与基础)
来源:互联网 发布:电脑数据怎么恢复 编辑:程序博客网 时间:2024/06/14 11:20
laravel笔记-数据库(配置与基础)
写在前面
时间可贵,善用目录↑
学习Laravel的笔记,仅仅是作为laravel文档笔记,目的是强化对文档的理解,质量不高。
写在前面
关于MySQL的配置方法参见另一篇博客: laravel5 数据库配置(MySQL)
基本参数
支持的数据库:
-MySQL
-Postgres
-SQLite
-SQL Server
配置文件位置:config/database.php
基本配置操作:
SQLite:
DB_CONNECTION=sqliteDB_DATABASE=/absolute/path/to/database.sqlite
SQL Server:
'sqlsrv' => [ 'driver' => 'sqlsrv', 'host' => env('DB_HOST', 'localhost'), 'database' => env('DB_DATABASE', 'forge'), 'username' => env('DB_USERNAME', 'forge'), 'password' => env('DB_PASSWORD', ''), 'charset' => 'utf8', 'prefix' => '',],
使用原生SQL查询
通过DB门面可以运行原生SQL语句,DB门面提供了select, update, insert, delete和statement方法。
简单的例子
查询:
//原生SQL,第一个是SQL语句,第二个是插入的数据$users = DB::select('select * from users where active = ?', [1]);
返回:以数组的形式返回结果集,数组中的每一个结果都是一个PHP StdClass对象
foreach ($users as $user) { echo $user->name;}
扩展
绑定数据:
除了使用?占位符来代表参数绑定外,还可以使用命名绑定来执行查询:
$results = DB::select('select * from users where id = :id', ['id' => 1]);
insert:
返回插入行数。
DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);
update:
返回更新行数。
$affected = DB::update('update users set votes = 100 where name = ?', ['John']);
delete:
返回删除行数。
$deleted = DB::delete('delete from users');
骚操作
读写分离
使用一个数据库连接做查询,另一个数据库连接做插入、更新和删除。
'mysql' => [ 'read' => [ 'host' => '192.168.1.1', ], 'write' => [ 'host' => '196.168.1.2' ], 'driver' => 'mysql', 'database' => 'database', 'username' => 'root', 'password' => '', 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => '',],
多个数据库连接
使用DB门面上的connection方法访问每个连接。
$users = DB::connection('database.php中定义的链接')->select(...);
如果想获得原生PDO可以如下:
$pdo = DB::connection()->getPdo();
监听SQL
DB门面的listen方法可以监听sql操作,我们可以在服务提供者中注册:
例如在之前例子中用到的:AppServiceProvider
namespace App\Providers;use Illuminate\Support\Facades\DB;use Illuminate\Support\ServiceProvider;class AppServiceProvider extends ServiceProvider{ /** * Bootstrap any application services. * * @return void */ public function boot() { //看这里~~ DB::listen(function ($query) { // $query->sql // $query->bindings // $query->time }); } /** * Register the service provider. * * @return void */ public function register() { // }}
数据库事务
就是BEGIN,ROBACK,COMMIT之类的
第一种方法:
使用DB门面的transaction方法,会自动提交或者回滚,不需要额外操作。
DB::transaction(function () { DB::table('users')->update(['votes' => 1]); DB::table('posts')->delete();});
第二种方法:
手动开始事务,也是使用DB门面。
//开始DB::beginTransaction();//回滚DB::rollBack();//提交DB::commit();
阅读全文
0 0
- laravel笔记-数据库(配置与基础)
- Laravel基础篇学习笔记(二):数据库操作
- Laravel安装与配置
- laravel 学习笔记(一)配置与测试
- laravel 基础笔记~快速入门
- laravel笔记-Eloquent ORM(基础)
- Laravel数据库读写分离配置
- laravel数据库读写分离配置
- laravel笔记-数据库(迁移)
- laravel 学习笔记二 :配置
- laravel的安装与配置
- Laravel的安装与配置
- 【laravel】安装与配置(一)
- laravel笔记-请求与响应
- 【laravel】CRUD数据库操作基础记录
- laravel操作数据库报错--基础
- mac 环境下laravel 5.1框架与数据库的连接和配置问题
- java与MySQL数据库详细基础笔记
- 关于Eclipse ProjectExplorer下文件的排序问题
- 微信网页开发——随手笔记
- Java加密解密等操作的工具类
- [总结]Java真是博大精深(一)
- form 中Enctype=nultipart/form-data的作用
- laravel笔记-数据库(配置与基础)
- CSS content换行技术实现字符animation loading效果
- BZOJ 2756 SCOI2012 奇怪的游戏
- RecyclerView item按下变色效果
- 关于Linux路由表的route命令
- 最大相连子序列和及相应的下标
- 程序中位运算的妙用
- JS中this的指向
- 人脸识别和跟踪程序