/** * Generate the unique cache key for the query. * * @return string */ public function generateCacheKey() { $name = $this->connection->getName(); return md5($name . $this->toSql() . serialize($this->getBindings())); }
/** * Prepare the database connection instance. * * @param \Nova\Database\Connection $connection * @return \Nova\Database\Connection */ protected function prepare(Connection $connection) { $connection->setFetchMode($this->app['config']['database.fetch']); if ($this->app->bound('events')) { $connection->setEventDispatcher($this->app['events']); } // The database connection can also utilize a cache manager instance when cache // functionality is used on queries, which provides an expressive interface // to caching both fluent queries and ORM queries that are executed. $app = $this->app; $connection->setCacheManager(function () use($app) { return $app['cache']; }); // We will setup a Closure to resolve the paginator instance on the connection // since the Paginator isn't used on every request and needs quite a few of // our dependencies. It'll be more efficient to lazily resolve instances. $connection->setPaginator(function () use($app) { return $app['paginator']; }); // Here we'll set a reconnector callback. This reconnector can be any callable // so we will set a Closure to reconnect from this manager with the name of // the connection, which will allow us to reconnect from the connections. $connection->setReconnector(function ($connection) { $this->reconnect($connection->getName()); }); return $connection; }
/** * Prepare the database connection instance. * * @param \Nova\Database\Connection $connection * @return \Nova\Database\Connection */ protected function prepare(Connection $connection) { $connection->setFetchMode($this->app['config']['database.fetch']); if ($this->app->bound('events')) { $connection->setEventDispatcher($this->app['events']); } $app = $this->app; $connection->setCacheManager(function () use($app) { return $app['cache']; }); $connection->setPaginator(function () use($app) { return $app['paginator']; }); $connection->setReconnector(function ($connection) { $this->reconnect($connection->getName()); }); return $connection; }