laravel transaction : laravel 的事務是不支援eloquent的, 要用DB::的方式

來源:互聯網
上載者:User

標籤:ber   let   ken   laravel   org   應用程式   nbsp   code   記錄   

資料庫交易處理#

你可以使用 transaction 方法,去執行一組資料庫交易處理的操作:

DB::transaction(function(){    DB::table(‘users‘)->update([‘votes‘ => 1]);    DB::table(‘posts‘)->delete();});

注意: 在 transaction 閉包若拋出任何異常會導致事務自動復原。

有時候你可能需要自己開始一個事務:

DB::beginTransaction();

你可以通過 rollback 的方法復原事務:

DB::rollback();

最後,你可以通過 commit 的方法提交事務:

DB::commit();

擷取串連#

若要使用多個串連,可以通過 DB::connection 方法取用:

$users = DB::connection(‘foo‘)->select(...);

你也可以取用原始底層的 PDO 執行個體:

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

有時候你可能需要重新串連到特定的資料庫:

DB::reconnect(‘foo‘);

如果你因為超過了底層 PDO 執行個體的 max_connections 的限制,需要關閉特定的資料庫連接,可以通過 disconnect 方法:

DB::disconnect(‘foo‘);

尋找日誌記錄#

Laravel 可以在記憶體裡訪問這次請求中所有的尋找語句。然而在有些例子下要注意,比如一次添加 大量的資料,可能會導致應用程式耗損過多記憶體。 如果要啟用日誌,可以使用 enableQueryLog 方法:

DB::connection()->enableQueryLog();

要得到執行過的尋找紀錄數組,你可以使用 getQueryLog 方法:

$queries = DB::getQueryLog();

laravel transaction : laravel 的事務是不支援eloquent的, 要用DB::的方式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.