/** * Register the Capsule service. * Ref: http://stackoverflow.com/questions/17105829/using-eloquent-orm-from-laravel-4-outside-of-laravel * * @param $app **/ public function register(Application $app) { $app['capsule.connection_defaults'] = array('driver' => 'mysql', 'host' => 'localhost', 'database' => null, 'username' => 'root', 'password' => null, 'charset' => 'utf8', 'collation' => 'utf8_unicode_ci', 'prefix' => null, 'logging' => false); $app['capsule.container'] = $app->share(function () { return new Container(); }); $app['capsule.dispatcher'] = $app->share(function () use($app) { return new Dispatcher($app['capsule.container']); }); if (class_exists('Illuminate\\Cache\\CacheManager')) { $app['capsule.cache_manager'] = $app->share(function () use($app) { return new CacheManager($app['capsule.container']); }); } $app['capsule'] = $app->share(function ($app) { $capsule = new DB($app['capsule.container']); $capsule->setEventDispatcher($app['capsule.dispatcher']); if (isset($app['capsule.cache_manager']) && isset($app['capsule.cache'])) { $capsule->setCacheManager($app['capsule.cache_manager']); foreach ($app['capsule.cache'] as $key => $value) { $app['capsule.container']->offsetGet('config')->offsetSet('cache.' . $key, $value); } } if (!isset($app['capsule.connections'])) { $app['capsule.connections'] = array('default' => isset($app['capsule.connection']) ? $app['capsule.connection'] : array()); } foreach ($app['capsule.connections'] as $connection => $options) { $options = array_replace($app['capsule.connection_defaults'], $options); $logging = $options['logging']; unset($options['logging']); $capsule->addConnection($options, $connection); if ($logging) { $capsule->getConnection($connection)->enableQueryLog(); } else { $capsule->getConnection($connection)->disableQueryLog(); } } return $capsule; }); }