/** * Filter for the join tables in read(). * TODO: manage the field datetime * * @author Luca Brognara * @date December 2015 * * @param Illuminate\Database\Eloquent\Builder $query * @param array $filters * @param array $columns * * @return array */ protected function filter($query, $filters, $columns) { foreach ($filters as $key => $filter) { $fields_exploded = explode('.', $filter['field']); if (count($fields_exploded) > 1) { $field_name = $fields_exploded[1]; // explode() necessary, because value in the form "table.field" } else { $field_name = $filter['field']; } $field_name = explode('.', $filter['field'])[1]; // explode() necessary, because value in the form "table.field" // if the field exist in the table if (in_array($field_name, $columns)) { switch (isset($filter['like']) ? $filter['like'] : 0) { case 0: default: // field == value $query->where($field_name, $filter['value']); break; case 1: // field == value% $query->where($field_name, 'LIKE', $filter['value'] . '%'); break; case 2: // field == %value $query->where($field_name, 'LIKE', '%' . $filter['value']); break; case 3: // field == %value% $query->where($field_name, 'LIKE', '%' . $filter['value'] . '%'); break; } } else { throw new \Exception('invalidFilters', 400); } } return true; }
/** * Limit items to only ones matching given title. * * @param Illuminate\Database\Eloquent\Builder $query * @return Illuminate\Database\Eloquent\Builder */ public function scopeWhereTitleLike($query, $title = '') { if ($this->table == 'titles' || $this->table == 'news') { return $query->where('title', 'LIKE', "%{$title}%"); } elseif ($this->table == 'images') { return $query->where('web', 'LIKE', "%{$title}%"); } elseif ($this->table == 'users') { return $query->where('username', 'LIKE', "%{$title}%"); } elseif ($this->table == 'reviews') { return $query->where('body', 'LIKE', "%{$title}%"); } elseif ($this->table == 'links') { return $query->where('label', 'LIKE', "%{$title}%"); } return $query->where('name', 'LIKE', "%{$title}%"); }
/** * 复用的以审核通过的用户范围. * * @param Illuminate\Database\Eloquent\Builder $query 查询器 * * @return Illuminate\Database\Eloquent\Builder 查询器 * * @author Seven Du <*****@*****.**> * @datetime 2016-04-15T23:33:11+0800 * @homepage http://medz.cn */ public function scopeAudit($query) { return $query->where('is_audit', '=', 1); }
public function scopeForUser(Illuminate\Database\Eloquent\Builder $query, $userId) { return $query->join('users_companies', 'users_companies.company_id', '=', 'checks.company_id')->where(function ($query) use($userId) { $query->where('users_companies.user_id', '=', $userId)->orWhere('checks.user_id', '=', $userId); }); }
/** * Returns actor model by actors name. * * @param Illuminate\Database\Eloquent\Builder $query * @return collection */ public function scopeByName($query, $name) { return $query->where('name', '=', $name)->firstOrFail(); }
/** * Fetches all information about series. * * @param Illuminate\Database\Eloquent\Builder $query * @return collection */ public function scopeSeries($query, $id) { return $query->where('id', '=', $id)->with('Season.Episode')->first(); }
function apply_filters(Illuminate\Database\Eloquent\Builder $query, $filters = '') { parse_str($filters, $filters); foreach ($filters as $filter => $value) { if ('' == $value or ';' == $value or '[]' == $value) { continue; } //resetting dependencies // if ('type'==$filter or 'commercial'==$filter) { // $filters = reset_dependencies($filters); // } $type = detect_filter_type($value); if ('check' == $type) { $query->where($filter, 1); } else { if ('list' == $type) { $list = trim($value, '[]'); $items = explode(';', $list); $query->whereIn($filter, $items); } else { if ('range' == $type) { $range = explode(';', $value); $query->where($filter, '>=', $range[0])->where($filter, '<=', $range[1]); } else { if ('type' == $type) { /*------------------------------------------------ | JOIN DEPENDENCIES ------------------------------------------------*/ if ('town_id' == $filter) { $filter = 'towns.town_id'; } if ('district_id' == $filter) { $filter = 'districts.district_id'; } /*----------------------------------------------*/ $query->where($filter, $value); } } } } } return $query; }
public function scopeSearch(Illuminate\Database\Eloquent\Builder $query, $str) { return $query->where('title', 'like', '%' . $str . '%')->orWhere('artist', 'like', '%' . $str . '%'); }
/** * Returns paginated titles for series page index. * * @param Illuminate\Database\Eloquent\Builder $query * @return collection */ public function scopeSeriesIndex($query, $perPage = 36) { return $query->where('type', '=', 'series')->orderBy(Helpers::getOrdering(), 'desc')->paginate($perPage); }
/** * Fetches all episodes for series. * * @param Illuminate\Database\Eloquent\Builder $query * @param int $id series id indb * @param int $num season number * @return collection */ public function scopeEpisodes($query, $id, $num) { return $query->where('title_id', '=', $id)->whereNumber($num)->get(); }
/** * Scope to get a record by a particular code. * * @param Illuminate\Database\Eloquent\Builder $query * @param string $code * @return Illuminate\Database\Eloquent\Builder */ public function scopeWithCode($query, $code) { return $query->where('code', $code); }