123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?php
- namespace yii\caching;
- use yii\base\InvalidConfigException;
- use yii\db\QueryInterface;
- use yii\di\Instance;
- class DbQueryDependency extends Dependency
- {
-
- public $db;
-
- public $query;
-
- public $method;
-
- protected function generateDependencyData($cache)
- {
- $db = $this->db;
- if ($db !== null) {
- $db = Instance::ensure($db);
- }
- if (!$this->query instanceof QueryInterface) {
- throw new InvalidConfigException('"' . get_class($this) . '::$query" should be an instance of "yii\db\QueryInterface".');
- }
- if (!empty($db->enableQueryCache)) {
-
- $originEnableQueryCache = $db->enableQueryCache;
- $db->enableQueryCache = false;
- $result = $this->executeQuery($this->query, $db);
- $db->enableQueryCache = $originEnableQueryCache;
- } else {
- $result = $this->executeQuery($this->query, $db);
- }
- return $result;
- }
-
- private function executeQuery($query, $db)
- {
- if ($this->method === null) {
- return $query->one($db);
- }
- if (is_string($this->method)) {
- return call_user_func([$query, $this->method], $db);
- }
- return call_user_func($this->method, $query, $db);
- }
- }
|