drh2so4 / modelscope
This is the simple package that allows you to utilize different laravel model scopes dealing with laravel query builders.
Installs: 5
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/drh2so4/modelscope
Requires (Dev)
- orchestra/testbench: 5.x-dev
This package is auto-updated.
Last update: 2025-10-29 02:30:48 UTC
README
This packages provides helpful query builder scopes. This package provide global scopes for every model by making making usage of trait where scopes is defined.
- Latest Data Retrive
- Week Data Retrive
- Year Data Retrive
- Month Data Retrive
- Between Date Data Retrive
- Not Between Date Data Retrive
- Order Ascending
- Order Descending
- Multiple Where Filtering
- Multiple orWhere Filtering
Installation
Run Composer Require Command
$ composer require drh2so4/modelscope
Use Namespace
use drh2so4\ModelScope\ModelScopes;
then.. Use Trait
use ModelScopes
Overall Structure
<?php namespace App; use App\Post; use drh2so4\ModelScope\ModelScopes; class Post{ use ModelScopes; // } }
Package Scopes
Packages scopes is made intented to make use various combination of query builder that we daily use of but don't have specified builder yet. This package fulfills that.
| Scopes | Description |
|---|---|
| Model::getLatestAll() | Retrive data orderd by updated_at timestamp in ascending order |
| Model::getLatestLimit($limit) | This scope expects parameter $limit which return $limit number of data |
| Model::todayData() | Retrives today's data |
| Model::weekData() | Retrives week data |
| Model::weekDataLimit($limit) | Retrives week $limit number of data |
| Model::monthData() | Retrives month data |
| Model::MonthDataLimit($limit) | Retrives month $limit number of data |
| Model::yearData() | Retrives month data |
| Model::yearDataLimit($limit) | Retrives year $limit number of data |
| Model::tillNowFrom($date) | Retrives data from $date till now |
| Model::dataBetween($from,$to) | Retrives data $from date to $to date |
| Model::dataNotBetween($from,$to) | Doesn't retrives data $from date to $to date |
| Model::asc() | Ascending Ordered Data |
| Model::desc() | Descending Ordered Data |
| Model::whereFilter(array) | Return multiple where condition data where key is field and value is condition matching value |
| Model::orWhereFilter(array) | Return multiple or where condition data where key is field and value is condition matching value |
Documentation
scopeLatestAll()
public function scopeGetLatestAll($query){ return $query->orderBy('updated_at','ASC'); }
Usage
$data = User::latestAll()->get();
scopeGetLatest($limit)
public function scopeGetLatestLimit($query,$limit = 5){ return $query->orderBy('updated_at','ASC')->take($limit); }
Usage
$data = User::latestLimit(8)->get();
Retives latest $limit number of data if no parameter given retrives 5(default paremeter value).
scopeTodayData()
public function scopeTodayData($query){ $date = Carbon::today(); $query->whereDate('updated_at',$date); }
Usage
$data = User::todayData()->get();
Retives data created today.
scopeWeekData()
public function scopeWeekData($query){ $date = Carbon::today()->subDays(7); $query->whereDate('updated_at','>=',$date); }
Usage
$data = User::weekData()->get();
Retives week created data.
scopeWeekDataLimit($limit)
public function scopeWeekDataLimit($query,$limit = 5){ $date = Carbon::today()->subDays(7); $query->whereDate('updated_at','>=',$date)->take($limit); }
Usage
$data = User::weekDataLimit(8)->get();
Retives week $limit number of data if parameter is left empty retives 5(default parameter value) data
scopeMonthData()
public function scopeMonthData($query){ $date = Carbon::today()->subMonth(); $query->whereDate('updated_at','>=',$date); }
Usage
$data = User::monthData()->get();
Retives month created data.
scopeMonthDataLimit($limit)
public function scopeMonthDataLimit($query,$limit = 5){ $date = Carbon::today()->subMonth(); $query->whereDate('updated_at','>=',$date)->take($limit); }
Usage
$data = User::mothDataLimit(8)->get();
Retives month $limit number of data if parameter is left empty retives 5(default parameter value) data
scopeYearData()
public function scopeYearData($query){ $date = Carbon::today()->subYear(); $query->whereDate('updated_at',$date); }
Usage
$data = User::yearData()->get();
Retives month created data.
scopeYearDataLimit($limit)
public function scopeYearDataLimit($query,$limit = 5){ $date = Carbon::today()->subYear(); return $query->whereDate('updated_at','>=',$date)->take($limit); }
Usage
$data = User::yearDataLimit(8)->get();
Retives year $limit number of data if parameter is left empty retives 5(default parameter value) data
scopeTodayData()
public function scopeTodayData($query){ $date = Carbon::today(); $query->whereDate('updated_at',$date); }
Usage
$data = User::todayData()->get();
Retives data created today.
scopeTillNowFrom($date)
public function scopeTillNowFrom($query,$date){ $this->date_validate($date); $from = Carbon::createFromFormat('l jS \\of F Y',trim($date)); return $query->whereDate('updated_at','>=',$from); }
Usage
$data = User::tillNowFrom('Thursday 25th of December 1975')->get();
Expects parameter as date in format 'l jS \of F Y'. Retrives all data created from $date till now.
scopeDataBetween($from,$to)
public function scopeDataBetween($query,$from_date,$to_date){ $this->dates_validate($from_date,$to_date); $from = Carbon::createFromFormat('l jS \\of F Y',trim($from_date)); $to = Carbon::createFromFormat('l jS \\of F Y',trim($to_date)); return $query->whereBetween('updated_at',[$from,$to]); }
Usage
$data = User::dataBetween('Thursday 25th of December 1975',''Saturday 27th of December 1975')->get();
Expects parameter as date $from and $to in format 'l jS \of F Y'. Retrives all data created $from and $to.
scopeDataNotBetween($from,$to)
public function scopeDataNotBetween($query,$from_date,$to_date){ $this->dates_validate($from_date,$to_date); $from = Carbon::createFromFormat('l jS \\of F Y',trim($from_date)); $to = Carbon::createFromFormat('l jS \\of F Y',trim($to_date)); return $query->whereNotBetween('updated_at',[$from,$to]); }
Usage
$data = User::dataNotBetween('Thursday 25th of December 1975',''Saturday 27th of December 1975')->get();
Expects parameter as date $from and $to in format 'l jS \of F Y'. Doesn't retrives data created $from and $to.
scopeWhereFilter($array)
public function scopeWhereFilter($query, array $filterData = []) { foreach ($filterData as $key => $value) { if (is_null($value) || $value === '') continue; $scopeName = ucfirst(str::of($key)->camel()); if (method_exists($this, 'scope' . $scopeName)) { $query->$scopeName($value); } else if (is_array($value)) { $query->whereIn($key, $value); } else { $query->where($key, $value); } } }
Usage
$data = User::whereFilter(['id' => '2'])->get();
Expect associative array where key is column name and value is column value. Retrives all the where condition mention. Above usage equals to User::where('id',2)->get()
Also Supports multiple where condition !
Usage
$data = User::whereFilter(['id' => '2','name' => 'Cat'])->get();
Retives data with id = 2 and name = cat
scopeorWhereFilter($array)
public function scopeorWhereFilter($query, array $filterData = []) { foreach ($filterData as $key => $value) { if (is_null($value) || $value === '') continue; $scopeName = ucfirst(str::of($key)->camel()); if (method_exists($this, 'scope' . $scopeName)) { $query->$scopeName($value); } else if (is_array($value)) { $query->orWhere($key, $value); } else { $query->where($key, $value); } } }
Usage
$data = User::orWhereFilter(['id' => '2'])->get();
Expect associative array where key is column name and value is column value. Retrives all the where condition mention. Above usage equals to User::orWhere('id',2)->get()
Also Supports multiple orWhere condition !
Usage
$data = User::orWhereFilter(['id' => '2','name' => 'Cat'])->get();
Retives data with id = 2 or name = cat
Todos
Exceptions. More Scopes. Some Testing
License
MIT
DOCTYPE NEPAL ||DR.H2SO4