public function getItems($limit, $offset)
 {
     $builder = $this->query->getQuery();
     if ($builder->groups || $builder->unions) {
         $row = DB::selectOne("SELECT COUNT(*) qty FROM (" . $this->query->toSql() . ") sub", $this->query->getBindings());
         $total = (int) $row->qty;
     } else {
         $total = $this->query->count();
     }
     $pageOfItems = $this->query->skip($offset)->take($limit)->get();
     return [$pageOfItems, $total];
 }
Пример #2
0
 public function toSql()
 {
     $this->newQuery();
     return $this->query->toSql();
 }
Пример #3
0
 /**
  * Get a preview of what query will be run from a query builder.
  *
  * This DOES NOT run the query so it can be used for debugging potentially memory-intensive queries.
  *
  * @param QueryBuilder $query
  * @return string
  */
 public static function getQueryPreview(QueryBuilder $query = null)
 {
     if (empty($query)) {
         return "";
     }
     $sql = str_replace('?', "'%s'", $query->toSql());
     $bindings = $query->getBindings();
     return vsprintf($sql, $bindings);
 }
Пример #4
0
 /**
  * Merge our cloned query builder with the original one.
  *
  * @param \Illuminate\Database\Eloquent\Builder $clone
  * @param \Illuminate\Database\Eloquent\Builder $original
  */
 protected function mergeQueries(Builder $clone, Builder $original)
 {
     $original->from(DB::connection($this->connection)->raw("({$clone->toSql()}) as `{$this->getTable()}`"));
     $original->mergeBindings($clone->getQuery());
 }
Пример #5
0
 /**
  * Merge our cloned query builder with the original one.
  *
  * @param \Illuminate\Database\Eloquent\Builder $clone
  * @param \Illuminate\Database\Eloquent\Builder $original
  */
 protected function mergeQueries(Builder $clone, Builder $original)
 {
     if ($this->getDatabaseDriver() == 'pgsql') {
         $original->from(DB::connection($this->connection)->raw("({$clone->toSql()}) as {$this->getTable()}"));
     } else {
         $original->from(DB::connection($this->connection)->raw("({$clone->toSql()}) as `{$this->getTable()}`"));
     }
     $original->mergeBindings($clone->getQuery());
 }
Пример #6
0
 /**
  * Merge our cloned query builder with the original one.
  *
  * @param \Illuminate\Database\Eloquent\Builder $clone
  * @param \Illuminate\Database\Eloquent\Builder $original
  */
 protected function mergeQueries(Builder $clone, Builder $original)
 {
     $prefix = App::$Database->connection($this->connection)->getTablePrefix();
     $tableName = $prefix . $this->getTable();
     if ($this->getDatabaseDriver() == 'pgsql') {
         $original->from(App::$Database->connection($this->connection)->raw("({$clone->toSql()}) as {$tableName}"));
     } else {
         $original->from(App::$Database->connection($this->connection)->raw("({$clone->toSql()}) as `{$tableName}`"));
     }
     $original->mergeBindings($clone->getQuery());
 }
Пример #7
0
 public function debug()
 {
     dd($this->query->toSql());
 }
Пример #8
0
 /**
  * Generate a cache key
  *
  * @return string
  */
 public function generateCacheKey()
 {
     return md5($this->model->getConnectionName() . $this->builder->toSql() . serialize($this->builder->getBindings()));
 }
Пример #9
0
 /**
  * Get the SQL representation of the Filterer query.
  *
  * @return string
  */
 public function toSql()
 {
     return $this->builder->toSql();
 }