[关闭]
@Chiang 2019-12-13T15:09:10.000000Z 字数 1282 阅读 559

数据库-快速入门

Laravel


使用多个数据库连接

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

访问原始PDO实例

  1. $pdo = DB::connection()->getPdo();

运行原生的sql语句

  1. // select
  2. $users = DB::select('select * from users where active = ?',[1]);
  3. $users = DB::select('select * form users where id = :id',['i'=>1]);
  4. // insert
  5. DB::insert('insert into users (id,name) values (?,?)',[1,'fazhan']);
  6. // update
  7. $affected = update('update users set votes = 100 where name = ?',['fazhan']);
  8. // delete
  9. $deleted = DB::delete('delete from users');
  10. // statement
  11. DB::statement('drop table users');

查询事件的监听

如果你希望能够监控到程序执行的每一条 SQL 语句,那么你可以使用 listen 方法。这个方法对于记录查询或调试非常有用。您可以将查询侦听器注册到一个服务提供者

  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Support\Facades\DB;
  4. use Illuminate\Support\ServiceProvider;
  5. class AppServiceProvider extends ServiceProvider
  6. {
  7. /**
  8. * 启动应用服务。
  9. *
  10. * @return void
  11. */
  12. public function boot()
  13. {
  14. DB::listen(function ($query) {
  15. // $query->sql
  16. // $query->bindings
  17. // $query->time
  18. });
  19. }
  20. /**
  21. * 注册服务提供者。
  22. *
  23. * @return void
  24. */
  25. public function register()
  26. {
  27. //
  28. }
  29. }

数据库事务

  1. DB::transaction(function(){
  2. DB::table('users')->update(['votes'=>1]);
  3. DB::table('posts')->delete();
  4. });

处理死锁

  1. DB::transaction(function(){
  2. DB::table('users')->update(['votes'=>1]);
  3. DB::table('posts')->delete();
  4. },5);

手动操作事务

  1. // 事务开始
  2. DB::beginTransaction();
  3. // 事务回滚
  4. DB::rollBack();
  5. // 事务提交
  6. DB::commit();

异常捕获

手动操作事务可以配合异常捕获

  1. try {
  2. //...
  3. } catch (Exception $e) {
  4. //...
  5. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注