protected function checkQuerySelects() { $selects = $this->query->getQuery()->columns; $tableSelect = $this->model->getTable() . '.*'; if (empty($selects) || !in_array($tableSelect, $selects)) { $this->query->addSelect($tableSelect); } }
/** * Return the query. * * @return \Illuminate\Database\Eloquent\Builder */ public function getQuery() { // If report is detailed, add all columns of modelGridQueries used by the gridQuery. // If report is summary, and method summaryGroupBy() is called, the columns are added // starting from the groupByKey which is a column of an modelGridQuery if ($this->isDetailed) { $this->query->addSelect($this->gridQuery->makeSelect($this->gridQuery->columnsToAddSelect())); } return $this->query; }
/** * @param Builder $query * * @return void */ public function select(Builder $query) { if (!is_null($select = $this->getRule()->getField()->getSelectField())) { if ($select instanceof Builder) { $query->selectSub($select->toSql(), $this->getRule()->getField()->getQueryField()); } else { $query->addSelect($select); } } }
/** * Filter a query by the value of a * field using this field type. * * @param Builder $query * @param FilterInterface $filter */ public function filter(Builder $query, FilterInterface $filter) { $stream = $filter->getStream(); $assignment = $stream->getAssignment($filter->getField()); $column = $this->fieldType->getColumnName(); $translations = $stream->getEntryTranslationsTableName(); if ($assignment->isTranslatable()) { if ($query instanceof EloquentQueryBuilder && !$query->hasJoin($translations)) { $query->leftJoin($stream->getEntryTranslationsTableName(), $stream->getEntryTableName() . '.id', '=', $stream->getEntryTranslationsTableName() . '.entry_id'); } $query->addSelect($translations . '.locale'); $query->addSelect($translations . '.' . $column); $query->{$this->where()}(function (Builder $query) use($stream, $filter, $column) { $query->where($stream->getEntryTranslationsTableName() . '.locale', config('app.locale')); $query->where($stream->getEntryTranslationsTableName() . '.' . $column, 'LIKE', "%" . $filter->getValue() . "%"); }); } else { $query->{$this->where()}(function (Builder $query) use($stream, $filter, $column) { $query->where($stream->getEntryTableName() . '.' . $column, 'LIKE', "%" . $filter->getValue() . "%"); }); } }
/** * Apply the scope to a given Eloquent query builder. * * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\Database\Eloquent\Model $model * @return void */ public function apply(Builder $builder, Model $model) { if (isset($model['calculated_columns'])) { $builder->addSelect('*'); foreach ($model['calculated_columns'] as $column => $query) { if (str_contains($query, ':user_id')) { $query = auth() && auth()->user() ? str_replace(':user_id', auth()->user()->id, $query) : 'false'; } $builder->selectSub($query, $column); } } return $builder; }
/** * Очень простая фильтрация скоупов. * * Если необходимо отфильтровать скоупы по id чему либо, обязательно нужно создать scope следующего вида.<br> * Пример: * * Ссылка для фильтрации - `catalog_id=*` * * Метод - `public function scopeCatalogId($int) {}` * * @return \Illuminate\Support\Collection */ protected function filterScopes() { if (count($this->_request) > 0) { foreach ($this->_request as $scope => $value) { if (!empty($value)) { //checked scope method for model if (method_exists($this->_query->getModel(), 'scope' . camel_case($scope))) { $this->_query->{camel_case($scope)}($value); } else { $values = explode(',', $value); if (count($values) > 1) { $this->filterSearch($scope, $values[0], '>'); $this->filterSearch($scope, $values[1], '<'); } else { $this->filterSearch($scope, $value, 'like', '%', '%'); } } } } $this->_query->addSelect($this->_query->getModel()->getTable() . '.*'); } return $this->_request; }
public function execute(Builder $query) { return $query->addSelect(DB::raw("(((match(search_texts.title) against ('{$this->text}')) * 100) + ((match(search_texts.meta) against ('{$this->text}')) * 20) + ((match(search_texts.standfirst) against ('{$this->text}')) * 10) + match(search_texts.text) against ('{$this->text}')) as rel"))->join('search_texts', 'pages.id', '=', 'search_texts.page_id')->where('search_texts.embargoed_until', '<=', time())->orderBy('rel', 'desc'); }
/** * Puts all the select clauses to the main query. * * @param \Illuminate\Database\Eloquent\Builder $query * @param array $selects */ protected function addSelectsToQuery(Builder $query, array $selects) { $selects = new Expression(implode(' + ', $selects) . ' as relevance'); $query->addSelect($selects); }
/** * @param Builder $query * @param DocumentInterface $document */ public function querySelectColumn(Builder $query, DocumentInterface $document) { $query->addSelect($this->getDBKey()); }
/** * @param Builder $table * * @return Builder */ public function apply(Builder $table) { return $table->addSelect($this->getColumnsToSelect()); }
public function build(Builder $query) { return $query->addSelect(DB::raw('count(pages_tags.tag_id) as tag_count'))->join('pages_tags', 'pages.id', '=', 'pages_tags.page_id')->whereIn('tag_id', $this->tagIds)->where('pages.id', '!=', $this->page->getId())->orderBy('tag_count', 'desc')->orderBy(DB::raw('rand()'))->groupBy('pages.id'); }