我使用Capsule来管理项目中的数据库连接,并使用Model来操作数据库,如下所示:
// Init Eloquent ORM Connection
$capsule = new Capsule;
$capsule->addConnection(Config::getDbConfig());
$capsule->addConnection(Config::getRadiusDbConfig(), 'radius');
$capsule->bootEloquent();
我想在对数据库执行大修改时使用事务,但类Model中没有相关方法。
由于Capsule,我无法使用Illuminate \ Suooprt \ Facades \ 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
我该如何处理?
答案 0 :(得分:4)
我在Laravel外面使用Eloquent ORM。
以下是我如何开始交易的解决方案。
您可以添加基础模型extend \ Illuminate \ Database \ Eloquent \ Model。
<default-suggestion-source>
<word collation="http://marklogic.com/collation/de">
<field name="my-suggest" />
</word>
</default-suggestion-source>
然后,您可以像这样使用它:
<?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();
}
}