hasMany(Item::class); } public function company(): BelongsTo { return $this->belongsTo(Company::class); } public function scopeWhereCompany(Builder $query): void { $query->where('company_id', request()->header('company')); } public function scopeWhereUnit(Builder $query, int $unit_id): void { $query->orWhere('id', $unit_id); } public function scopeWhereSearch(Builder $query, string $search): Builder { return $query->where('name', 'LIKE', '%'.$search.'%'); } public function scopeApplyFilters(Builder $query, array $filters): Builder { $filters = collect($filters); if ($filters->get('search')) { $query->whereSearch($filters->get('search')); } if ($filters->get('unit_id')) { $query->whereUnit($filters->get('unit_id')); } if ($filters->get('company_id')) { $query->whereCompany($filters->get('company_id')); } return $query; } /** * @return Collection|LengthAwarePaginator */ public function scopePaginateData(Builder $query, string $limit) { if ($limit == 'all') { return $query->get(); } return $query->paginate($limit); } }