diff --git a/src/Illuminate/Database/SQLiteConnection.php b/src/Illuminate/Database/SQLiteConnection.php index a5ec3218b8f1..c2fc89c8e5e6 100755 --- a/src/Illuminate/Database/SQLiteConnection.php +++ b/src/Illuminate/Database/SQLiteConnection.php @@ -10,6 +10,23 @@ class SQLiteConnection extends Connection { + /** + * Create a new database connection instance. + * + * @param \PDO|\Closure $pdo + * @param string $database + * @param string $tablePrefix + * @param array $config + * @return void + */ + public function __construct($pdo, $database = '', $tablePrefix = '', array $config = []) + { + parent::__construct($pdo, $database, $tablePrefix, $config); + + if ($this->getForeignKeyConstraintsSetting() == true) { + $this->getSchemaBuilder()->enableForeignKeyConstraints(); + } + } /** * Get the default query grammar instance. * @@ -63,4 +80,14 @@ protected function getDoctrineDriver() { return new DoctrineDriver; } + + /** + * Get the database connection foreign_key_constraints setting. + * + * @return boolean|null + */ + protected function getForeignKeyConstraintsSetting() + { + return $this->getConfig('foreign_key_constraints'); + } } diff --git a/tests/Database/DatabaseConnectionFactoryTest.php b/tests/Database/DatabaseConnectionFactoryTest.php index e91276dc4fda..11e391a88851 100755 --- a/tests/Database/DatabaseConnectionFactoryTest.php +++ b/tests/Database/DatabaseConnectionFactoryTest.php @@ -102,4 +102,17 @@ public function testCustomConnectorsCanBeResolvedViaContainer() $this->assertEquals('connector', $factory->createConnector(['driver' => 'foo'])); } + + public function testSqliteForeignKeyConstraints() + { + $this->db->addConnection([ + 'driver' => 'sqlite', + 'database' => ':memory:', + 'foreign_key_constraints' => true, + ], 'constraints_set'); + + $this->assertEquals(0, $this->db->connection()->select('PRAGMA foreign_keys')[0]->foreign_keys); + + $this->assertEquals(1, $this->db->connection('constraints_set')->select('PRAGMA foreign_keys')[0]->foreign_keys); + } }