Exemple #1
0
 /**
  * Handle dynamic method calls.
  *
  * @param  string  $method
  * @param  array   $parameters
  * @return mixed
  */
 public function __call($method, $parameters)
 {
     $start = microtime(true);
     $result = call_user_func_array([$this->collection, $method], $parameters);
     if ($this->connection->logging()) {
         // Once we have run the query we will calculate the time that it took to run and
         // then log the query, bindings, and execution time so we will report them on
         // the event that the developer needs them. We'll log time in milliseconds.
         $time = $this->connection->getElapsedTime($start);
         $query = [];
         // Convert the query paramters to a json string.
         foreach ($parameters as $parameter) {
             try {
                 $query[] = json_encode($parameter);
             } catch (Exception $e) {
                 $query[] = '{...}';
             }
         }
         $queryString = $this->collection->getName() . '.' . $method . '(' . implode(',', $query) . ')';
         $this->connection->logQuery($queryString, [], $time);
     }
     return $result;
 }
Exemple #2
0
 /**
  * Generate the unique cache key for the current query.
  *
  * @return string
  */
 public function generateCacheKey()
 {
     $key = ['connection' => $this->connection->getName(), 'collection' => $this->collection->getName(), 'wheres' => $this->wheres, 'columns' => $this->columns, 'groups' => $this->groups, 'orders' => $this->orders, 'offset' => $this->offset, 'limit' => $this->limit, 'aggregate' => $this->aggregate];
     return md5(serialize(array_values($key)));
 }