增刪改查
配置完數據庫連接,就可以使用DB類進行查詢了。
查詢
$results = DB::select('select * from users where id = ?', array(1));
select方法會以數組形式返回查詢結果。
插入
DB::insert('insert into users (id, name) values (?, ?)', array(1, 'Dayle'));
更新
DB::update('update users set votes = 100 where name = ?', array('John'));
刪除
DB::delete('delete from users');
注意:update和delete語句返回受影響的行數。
通用語句
DB::statement('drop table users');
監聽Query事件
DB::listen(function($sql, $bindings, $time) { // });
數據庫事務
DB::transaction(function() { DB::table('users')->update(array('votes' => 1)); DB::table('posts')->delete(); });
注意:transaction閉包中的任何異常將會導致事務自動回滾。
有時候也許你想自己開啟事務:
DB::beginTransaction();
你也可以自己回滾事務:
DB::rollback();
最后,你可以通過commit方法提交事務:
DB::commit();
多個數據庫連接訪問
當使用多個數據庫連接時,可以通過DB::connection方法訪問它們:
$users = DB::connection('foo')->select(...);
你可以通過PDO實例訪問原生連接:
$pdo = DB::connection()->getPdo();
有時候你需要重連數據庫:
DB::reconnect('foo');
如果因為超出PDO實例的最大連接數限制而要斷開連接,使用disconnect方法:
DB::disconnect('foo');
查詢日志
默認情況下,Laravel使用日志記錄當前請求的所有數據庫查詢操作,但是某些時候,比如插入大量數據,會引起應用使用過量內存。為了關閉日志,可以使用disableQuery方法:
DB::connection()->disableQueryLog();
獲取查詢日志記錄,可以用過getQuery方法:
$queries = DB::getQueryLog();
參考:http://nonfu.me/p/10911.html 、 http://nonfu.me/job