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]; }
public function toSql() { $this->newQuery(); return $this->query->toSql(); }
/** * 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); }
/** * 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()); }
/** * 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()); }
/** * 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()); }
public function debug() { dd($this->query->toSql()); }
/** * Generate a cache key * * @return string */ public function generateCacheKey() { return md5($this->model->getConnectionName() . $this->builder->toSql() . serialize($this->builder->getBindings())); }
/** * Get the SQL representation of the Filterer query. * * @return string */ public function toSql() { return $this->builder->toSql(); }