belongsTo('App\Models\Company\Company'); } /** * Define the filter provider globally. * * @return ModelFilter */ public function modelFilter() { // Check if is api or web if (Request::is('api/*')) { $arr = array_reverse(explode('\\', explode('@', app()['api.router']->currentRouteAction())[0])); $folder = $arr[1]; $file = $arr[0]; } else { list($folder, $file) = explode('/', Route::current()->uri()); } if (empty($folder) || empty($file)) { return $this->provideFilter(); } $class = '\App\Filters\\' . ucfirst($folder) . '\\' . ucfirst($file); return $this->provideFilter($class); } /** * Scope to only include company data. * * @param \Illuminate\Database\Eloquent\Builder $query * @param $company_id * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeCompanyId($query, $company_id) { return $query->where($this->table . '.company_id', '=', $company_id); } /** * Scope to get all rows filtered, sorted and paginated. * * @param \Illuminate\Database\Eloquent\Builder $query * @param $sort * * @return \Illuminate\Database\Eloquent\Builder */ public function scopeCollect($query, $sort = 'name') { $request = request(); $input = $request->input(); $limit = $request->get('limit', setting('general.list_limit', '25')); return $query->filter($input)->sortable($sort)->paginate($limit); } /** * Scope to only include active currencies. * * @param \Illuminate\Database\Eloquent\Builder $query * @return \Illuminate\Database\Eloquent\Builder */ public function scopeEnabled($query) { return $query->where('enabled', 1); } }