Пример #1
0
 /**
  * Allows all columns on the current database table to be sorted through
  * query scope
  *
  * @param Illuminate\Database\Eloquent\Builder $query
  * @param string|array $field
  * 	if array:
  * 		e.g ['created_at' => 'desc']
  * 			['created_at' => 'desc', 'id' => 'asc']
  * 			['created_at' => 'desc', 'id' => 'asc', 'name' => 'asc']
  * @param string $sort desc|asc
  * @return Illuminate\Database\Eloquent\Builder
  */
 public function scopeSort($query, $field = NULL, $sort = NULL)
 {
     if (!empty($field) && is_array($field)) {
         foreach ($field as $sort => $direction) {
             /*
              * Return the query sorted
              */
             $query->orderBy($sort, $direction);
         }
         return $query;
     }
     /*
      * Make sure both the field and sort variables are present
      */
     if (is_string($field) && is_string($sort)) {
         /*
          * Make sure the sort input is equal to asc or desc
          */
         if (strtolower($sort) === 'asc' || strtolower($sort) === 'desc') {
             /*
              * Return the query sorted
              */
             return $query->orderBy($field, strtoupper($sort));
         }
     }
 }
Пример #2
0
 /**
  * Order the query by given column and director or by
  * defaults if no arguments given.
  * 
  * @param  Illuminate\Database\Eloquent\Builder $query 
  * @return Illuminate\Database\Eloquent\Builder
  */
 public function scopeOrder($query, $order = null)
 {
     $direction = 'desc';
     $column = $this->defaultOrderColumn;
     if ($order) {
         //split string (created_atAsc) by camelCase into column and direction
         $s = preg_split('/(?=[A-Z])/', $order);
         //if we've got direction overwrite default one
         if (isset($s[1])) {
             $direction = strtolower($s[1]);
         }
         //if we've got column overwrite default one
         if (isset($s[0])) {
             $column = $s[0];
         }
     }
     return $query->orderBy($column, $direction);
 }
Пример #3
0
 /**
  * Returns recent reviews.
  * 
  * @param  Illuminate\Database\Eloquent\Builder $query 
  * @return collection
  */
 public function scopeRecent($query)
 {
     return $query->orderBy('created_at', 'desc')->limit(6)->get();
 }
Пример #4
0
 /**
  * Returns popular actors.
  * 
  * @param  Illuminate\Database\Eloquent\Builder $query 
  * @return collection
  */
 public function scopePopular($query)
 {
     return $query->orderBy('views', 'desc')->limit(6)->get();
 }
Пример #5
0
 /**
  * Returns all news items paginated.
  * 
  * @param  Illuminate\Database\Eloquent\Builder $query 
  * @return collection
  */
 public function scopeNewsIndex($query)
 {
     return $query->orderBy('created_at', 'desc')->paginate(20);
 }
Пример #6
0
 /**
  * ordina i risultati della query in base a parametri in formato json "{"titolo":1,"tecnica":-1}"
  * @param Illuminate\Database\Eloquent\Builder $query
  * @param string $sortOptions una stringa formato json con i parametri per l'ordinamento
  */
 public function scopeSortBy($query, $sortOptions = '{}')
 {
     if (is_null($sortOptions)) {
         return $query;
     }
     if (!is_array($sortOptions)) {
         $sortOptions = json_decode($sortOptions);
     }
     foreach ($sortOptions as $column => $direction) {
         $direction = $direction == -1 ? 'desc' : 'asc';
         $query->orderBy($column, $direction);
     }
     return $query;
 }
Пример #7
0
 /**
  * Order by the data_order param
  *
  * @param  Illuminate\Database\Eloquent\Builder $query
  * @param  string $order Order direction
  * @return Illuminate\Database\Eloquent\Builder $query
  */
 public function scopeByOrder($query, $order = 'desc')
 {
     $query->orderBy('data_order', $order);
     return $query;
 }