Exemplo n.º 1
0
 /**
  * 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;
 }
Exemplo n.º 2
0
 /**
  * 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}%");
 }
Exemplo n.º 3
0
 /**
  * 复用的以审核通过的用户范围.
  *
  * @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);
 }
Exemplo n.º 4
0
 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);
     });
 }
Exemplo n.º 5
0
 /**
  * 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();
 }
Exemplo n.º 6
0
 /**
  * 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();
 }
Exemplo n.º 7
0
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;
}
Exemplo n.º 8
0
 public function scopeSearch(Illuminate\Database\Eloquent\Builder $query, $str)
 {
     return $query->where('title', 'like', '%' . $str . '%')->orWhere('artist', 'like', '%' . $str . '%');
 }
Exemplo n.º 9
0
 /**
  * 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);
 }
Exemplo n.º 10
0
 /**
  * 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();
 }
Exemplo n.º 11
0
 /**
  * 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);
 }