/** * Sort model by parameters given in the URL * i.e: ?sortby=name&sortdir=desc * * @param \Illuminate\Database\Eloquent\Builder * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeOrderByUrl($query) { $column = Input::get('sortby'); switch ($column) { default: return parent::scopeOrderByUrl($query); case 'user_id': $table = 'users'; $relatedColumn = 'username'; break; case 'provider_id': $table = 'authproviders'; $relatedColumn = 'title'; break; } $direction = Input::get('sortdir') === 'desc' ? 'desc' : 'asc'; return $query->select($this->getTable() . '.*')->leftJoin($table, $column, '=', "{$table}.id")->orderBy("{$table}.{$relatedColumn}", $direction); // Sort by related column }
/** * Sort model by parameters given in the URL * i.e: ?sortby=name&sortdir=desc * * @param \Illuminate\Database\Eloquent\Builder * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeOrderByUrl($query) { $column = Input::get('sortby'); $direction = Input::get('sortdir') === 'desc' ? 'desc' : 'asc'; if ($column === 'name') { return $query->orderBy('title', $direction); } return parent::scopeOrderByUrl($query); }