2016-04-21 103 views
0

我用膠囊在我的項目管理數據庫連接,並使用模型來操作數據庫的,就像這樣:如何雄辯型號使用事務

// Init Eloquent ORM Connection 
$capsule = new Capsule; 
$capsule->addConnection(Config::getDbConfig()); 
$capsule->addConnection(Config::getRadiusDbConfig(), 'radius'); 
$capsule->bootEloquent(); 

我希望在執行大量修改數據庫使用事務,但類模型中沒有相關的方法。

因爲膠囊的,我不能夠使用照亮\ Suooprt \外立面\ DB,因爲它顯示該錯誤信息:

PHP Fatal error: Uncaught RuntimeException: A facade root has not been set. in 
E:\Projects\ss-panel\vendor\illuminate\support\Facades\Facade.php:210 

我應該如何處理呢?

+1

您有加入'使用照亮\數據庫\膠囊\經理爲DB;'在類的開始? – iamgory

+0

@iamgory試過了,但得到一個錯誤:未捕獲錯誤:調用成員函數getConnection()null –

回答

2

我在Laravel外面使用了Eloquent ORM。

以下是我如何開始交易的解決方案。

您可以添加基本模型extend \ Illuminate \ Database \ Eloquent \ Model。

<?php 

use Illuminate\Database\Eloquent\Model as EloquentModel; 

class Model extends EloquentModel 
{ 
    public static function beginTransaction() 
    { 
      self::getConnectionResolver()->connection()->beginTransaction(); 
    } 

    public static function commit() 
    { 
     self::getConnectionResolver()->connection()->commit(); 
    } 

    public static function rollBack() 
    { 
     self::getConnectionResolver()->connection()->rollBack(); 
    }  
} 

然後,您可以使用它像這樣:

Model::beginTransaction(); 

//do what you like. 

Model::commit(); 

// OR 

Model::rollBack(); 
+0

我也在Slim 3 Framework上使用Laravel以外的口才。這對我來說非常合適,謝謝! –