Tac*_*tex 13 php sqlite foreign-keys laravel laravel-5
在SQLite中,默认情况下禁用外键约束.
配置Laravel 5.1的SQLite数据库连接以启用外键约束的最佳方法是什么?我看不到这样做的方式
['connections']['sqlite']
中
/config/database.php
.
Tac*_*tex 22
这是一个解决方案.在
boot()
方法中
App\Providers\AppServiceProvider
,添加:
if (DB::connection() instanceof \Illuminate\Database\SQLiteConnection) {
DB::statement(DB::raw('PRAGMA foreign_keys=1'));
}
Run Code Online (Sandbox Code Playgroud)
感谢@RobertTrzebinski撰写关于Laravel 4的博文.
对我来说,使用Laravel 5.2中App\Providers\AppServiceProvider中的Facade DB产生了错误.这是我的解决方案:
if(config('database.default') == 'sqlite'){
$db = app()->make('db');
$db->connection()->getPdo()->exec("pragma foreign_keys=1");
}
Run Code Online (Sandbox Code Playgroud)
由于我只想在我的测试中使用它,但在所有测试中,我最终在Tests\TestCase
类中得到了一个简单的实现,如下所示:
abstract class TestCase extends BaseTestCase
{
use CreatesApplication;
protected function setUp()
{
parent::setUp();
$this->enableForeignKeys();
}
/**
* Enables foreign keys.
*
* @return void
*/
public function enableForeignKeys()
{
$db = app()->make('db');
$db->getSchemaBuilder()->enableForeignKeyConstraints();
}
}
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力:-)
归档时间: |
|
查看次数: |
4096 次 |
最近记录: |