/** * Apply the scope to a given Eloquent query builder. * * @param \Illuminate\Database\Eloquent\Builder $builder * @return void */ public function apply(Builder $builder) { $model = $builder->getModel(); $builder->whereNotNull($model->getQualifiedActivatedAtColumn()); $builder->macro('withDeactivated', function (Builder $builder) { $this->remove($builder); return $builder; }); $builder->macro('onlyDeactivated', function (Builder $builder) { $model = $builder->getModel(); $this->remove($builder); $builder->getQuery()->whereNotNull($model->getQualifiedActivatedAtColumn()); return $builder; }); $builder->macro('deactivate', function (Builder $builder) { $model = $builder->getModel(); $builder->withDeactivated(); return $builder->update([$model->getActivatedAtColumn() => null]); }); $builder->macro('activate', function (Builder $builder) { $model = $this->getModel(); $query = $model->newQuery()->where($model->getKeyName(), $model->getKey()); $model->{$model->getActivatedAtColumn()} = $time = $model->freshTimestamp(); $query->update([$model->getActivatedAtColumn() => $model->fromDateTime($time)]); }); }
/** * Returns the count for a countable parameter, given the query provided * * @param string $name * @param EloquentBuilder $query * @param CountableFilterInterface $filter * @return array */ public function count($name, $query, CountableFilterInterface $filter) { // if the columnname is not set, assume an id field based on a table name $columnName = empty($this->columnName) ? $name : $this->columnName; if (!$this->includeEmpty) { $query->whereNotNull($columnName); } return $query->select("{$columnName} AS {$this->columnAlias}", DB::raw("{$this->countRaw} AS {$this->countAlias}"))->groupBy($columnName)->pluck($this->countAlias, $this->columnAlias); }
/** * Modifies the query to only include files attached to an clippable. * * @param Builder $query * @return Builder */ public function scopeAttached(Builder $query) { return $query->whereNotNull('clippable_id')->whereNotNull('clippable_type'); }
/** * Scope verified subscribers. * * @param \Illuminate\Database\Eloquent\Builder $query * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeIsVerified(Builder $query) { return $query->whereNotNull('verified_at'); }
/** * Scope a query to only include the jobs that have a due date. * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeWithDueDate($query) { return $query->whereNotNull('job_cards_orig_oc_date')->orWhere('job_cards_new_oc_date', '<>', null); }
/** * Returns all the registered users. * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeRegistered(Builder $query) { return $query->whereNotNull('user_id')->with('user'); }
/** * Get groups near a another address. * * @param Builder $q * @param Address $address * @param null $miles * * @return $this */ public function scopeNear(Builder $q, Address $address, $miles = null) { if (is_null($miles)) { $miles = Config::get('biblebowl.groups.nearby'); } return $q->active()->with(['address' => function ($q) use($miles, $address) { $q->whereNotNull($address->getLatColumn())->whereNotNull($address->getLngColumn())->within($miles, 'miles', $address->latitude, $address->longitude); }]); }
/** * Query filters. * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ protected function queryFilters($query, $filters = []) { $filters = $filters ?: $this->filters; foreach ($filters as $key => $filter) { foreach ($filter as $operator => $values) { $values = is_array($values) ? $values : [$values]; $operator = is_numeric($operator) ? '=' : $operator; if ($operator == '=') { $query->whereIn($key, $values); } elseif ($operator == '!=') { $query->whereNotIn($key, $values); } elseif ($operator == 'null') { $query->whereNull($key); } elseif ($operator == 'not_null') { $query->whereNotNull($key); } else { $query->where($key, $operator, head($values)); } } } return $query; }
/** * Add a whereNotNull to the query * * @param $field * @return mixed */ public function whereNotNull($field) { $this->builder = $this->builder->whereNotNull($field); return $this; }
/** * Query scope for inactive groups. */ public function scopeInactive(Builder $query) { return $query->whereNotNull($this->getInactiveColumn()); }
/** * 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) { $builder->whereNotNull('published_at'); $this->extend($builder); }
/** * NotNull * * @param $key * @param $value * @return $this */ private function setNotNull($key, $value) { $this->query->whereNotNull($key, $value); return $this; }
public function scopeRead(Builder $query) { $query->whereNotNull('read_at'); }
/** * Returns all the registered users. * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeLoggedInUsers($query) { return $query->whereNotNull('user_id')->with('user'); }
/** * Applies parameter filtering for a given query * * @param string $name * @param mixed $value * @param EloquentBuilder $query * @param FilterInterface $filter * @return EloquentBuilder */ public function apply($name, $value, $query, FilterInterface $filter) { $column = (!empty($this->table) ? $this->table . '.' : null) . (!empty($this->column) ? $this->column : $name); return $query->whereNotNull($column)->where($column, '!=', ''); }