From d4b36e9bad4c9d64447f053ec19a9f600888b2fe Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Sun, 14 Jan 2018 01:48:50 +0100 Subject: Added Illuminate/Database --- src/Database/DatabaseServiceProvider.php | 38 +++++++++++++++++++++++--------- src/Database/Db.php | 30 +++++++++---------------- 2 files changed, 37 insertions(+), 31 deletions(-) (limited to 'src/Database') diff --git a/src/Database/DatabaseServiceProvider.php b/src/Database/DatabaseServiceProvider.php index 49fb4af5..306ffaca 100644 --- a/src/Database/DatabaseServiceProvider.php +++ b/src/Database/DatabaseServiceProvider.php @@ -4,23 +4,39 @@ namespace Engelsystem\Database; use Engelsystem\Container\ServiceProvider; use Exception; -use PDO; +use Illuminate\Database\Capsule\Manager as CapsuleManager; +use Illuminate\Events\Dispatcher as EventsDispatcher; class DatabaseServiceProvider extends ServiceProvider { public function register() { $config = $this->app->get('config'); - Db::connect( - 'mysql:host=' . $config->get('database')['host'] - . ';dbname=' . $config->get('database')['db'] - . ';charset=utf8', - $config->get('database')['user'], - $config->get('database')['pw'] - ) || $this->exitOnError(); - - Db::getPdo()->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); - Db::getPdo()->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); + $capsule = $this->app->make(CapsuleManager::class); + + $dbConfig = $config->get('database'); + $capsule->addConnection(array_merge([ + 'driver' => 'mysql', + 'host' => '', + 'database' => '', + 'username' => '', + 'password' => '', + 'charset' => 'utf8', + 'collation' => 'utf8_unicode_ci', + 'prefix' => '', + ], $dbConfig)); + + $capsule->setAsGlobal(); + $capsule->bootEloquent(); + + try { + $capsule->getConnection()->getPdo(); + } catch (\PDOException $e) { + $this->exitOnError(); + } + + $this->app->instance('db', $capsule); + Db::setDbManager($capsule); } /** diff --git a/src/Database/Db.php b/src/Database/Db.php index 114bd8fc..aa9b1a27 100644 --- a/src/Database/Db.php +++ b/src/Database/Db.php @@ -2,14 +2,14 @@ namespace Engelsystem\Database; +use Illuminate\Database\Capsule\Manager as CapsuleManager; use PDO; -use PDOException; use PDOStatement; class Db { - /** @var PDO */ - protected static $db; + /** @var CapsuleManager */ + protected static $dbManager; /** @var PDOStatement */ protected static $stm = null; @@ -18,23 +18,13 @@ class Db protected static $lastStatus = true; /** - * Connect to database + * Set the database connection manager * - * @param string $dsn - * @param string $username - * @param string $password - * @param array $options - * @return bool + * @param CapsuleManager $dbManager */ - public static function connect($dsn, $username = null, $password = null, $options = []) + public static function setDbManager($dbManager) { - try { - self::$db = new PDO($dsn, $username, $password, $options); - } catch (PDOException $e) { - return false; - } - - return true; + self::$dbManager = $dbManager; } /** @@ -46,7 +36,7 @@ class Db */ public static function query($query, array $bindings = []) { - self::$stm = self::$db->prepare($query); + self::$stm = self::getPdo()->prepare($query); self::$lastStatus = self::$stm->execute($bindings); return self::$stm; @@ -60,7 +50,7 @@ class Db */ public static function unprepared($query) { - self::$stm = self::$db->query($query); + self::$stm = self::getPdo()->query($query); self::$lastStatus = (self::$stm instanceof PDOStatement); return self::$lastStatus; @@ -175,7 +165,7 @@ class Db */ public static function getPdo() { - return self::$db; + return self::$dbManager->getConnection()->getPdo(); } /** -- cgit v1.2.3-54-g00ecf