PHP Class EloquentFilter\ModelFilter

Mostra file Open project: tucker-eric/eloquentfilter

Public Properties

Property Type Description
$relations array Related Models that have ModelFilters as well as the method on the ModelFilter As [relatedModel => [input_key1, input_key2]].

Protected Properties

Property Type Description
$allRelations array Container for all relations (local and related ModelFilters).
$drop_id boolean Drop _id from the end of input keys when referencing methods.
$input array Array of input to filter.
$localRelatedFilters array (This allows us to not be required to define a filter for the related models).
$query Illuminate\Database\Eloquent\Builder
$relationsEnabled boolean This is to be able to bypass relations if we are filtering a joined table.

Public Methods

Method Description
__call ( $method, $args ) Handle calling methods on the query object.
__construct ( $query, array $input = [], boolean $relationsEnabled = true ) ModelFilter constructor.
addRelated ( $relation, Closure $closure ) Locally defines a relation filter method that will be called in the context of the related model.
callRelatedLocalSetup ( $related, $query )
disableRelations ( ) Disable querying relations (Mainly for joined tables as the related model isn't queried).
dropIdSuffix ( null $bool = null ) : boolean Set to drop _id from input. Mainly for testing.
enableRelations ( ) Enable querying relations.
filterInput ( ) Filter with input array.
filterJoinedRelation ( $related ) Run the filter on models that already have their tables joined.
filterRelations ( ) Filter relationships defined in $this->relations array.
filterUnjoinedRelation ( $related ) Filters by a relationship that isn't joined by using that relation's ModelFilter.
getAllRelations ( ) : array Returns all local relations and relations requiring other Model's Filter's.
getFilterMethod ( $key ) : string
getJoinedTables ( ) : array Gets all the joined tables.
getLocalRelation ( string $related ) : array
getRelatedFilter ( $relation ) : mixed Get the model filter of a related model.
getRelatedFilterInput ( $related ) : array Get input to pass to a related Model's Filter.
getRelatedModel ( $relation ) : Model Get an empty instance of a related model.
getRelatedTable ( $relation ) : string Get the table name from a relationship.
getRelationConstraints ( string $relation ) : array Get all input to pass through related filters and local closures as an array.
handle ( ) : Builder Handle all filters.
input ( null $key = null, null $default = null ) : array | mixed | null Retrieve input by key or all input as array.
push ( $key, null $value = null ) Add values to filter by if called in setup().
related ( $relation, $column, null $operator = null, null $value = null, string $boolean = 'and' ) Add a where constraint to a relationship.
relationIsFilterable ( $relation ) : boolean Check to see if there is input or locally defined methods for the given relation.
relationIsJoined ( $relation ) : boolean Checks if the relation to filter's table is already joined.
relationIsLocal ( $related ) : boolean Checks to see if there are locally defined relations to filter.
relationUsesFilter ( $related ) : boolean Checks if there is input that should be passed to a related Model Filter.
relationsEnabled ( ) : boolean Checks if filtering by relations is enabled.
removeEmptyInput ( array $input ) : array Remove empty strings from the input array.

Method Details

__call() public method

Handle calling methods on the query object.
public __call ( $method, $args )
$method
$args

__construct() public method

ModelFilter constructor.
public __construct ( $query, array $input = [], boolean $relationsEnabled = true )
$query
$input array
$relationsEnabled boolean

addRelated() public method

Locally defines a relation filter method that will be called in the context of the related model.
public addRelated ( $relation, Closure $closure )
$relation
$closure Closure

callRelatedLocalSetup() public method

public callRelatedLocalSetup ( $related, $query )

disableRelations() public method

Disable querying relations (Mainly for joined tables as the related model isn't queried).
public disableRelations ( )

dropIdSuffix() public method

Set to drop _id from input. Mainly for testing.
public dropIdSuffix ( null $bool = null ) : boolean
$bool null
return boolean

enableRelations() public method

Enable querying relations.
public enableRelations ( )

filterInput() public method

Filter with input array.
public filterInput ( )

filterJoinedRelation() public method

Run the filter on models that already have their tables joined.
public filterJoinedRelation ( $related )
$related

filterRelations() public method

Filter relationships defined in $this->relations array.
public filterRelations ( )

filterUnjoinedRelation() public method

Filters by a relationship that isn't joined by using that relation's ModelFilter.
public filterUnjoinedRelation ( $related )
$related

getAllRelations() public method

Returns all local relations and relations requiring other Model's Filter's.
public getAllRelations ( ) : array
return array

getFilterMethod() public method

public getFilterMethod ( $key ) : string
$key
return string

getJoinedTables() public method

Gets all the joined tables.
public getJoinedTables ( ) : array
return array

getLocalRelation() public method

public getLocalRelation ( string $related ) : array
$related string
return array

getRelatedFilter() public method

Get the model filter of a related model.
public getRelatedFilter ( $relation ) : mixed
$relation
return mixed

getRelatedFilterInput() public method

Get input to pass to a related Model's Filter.
public getRelatedFilterInput ( $related ) : array
$related
return array

getRelatedModel() public method

Get an empty instance of a related model.
public getRelatedModel ( $relation ) : Model
$relation
return Illuminate\Database\Eloquent\Model

getRelatedTable() public method

Get the table name from a relationship.
public getRelatedTable ( $relation ) : string
$relation
return string

getRelationConstraints() public method

Get all input to pass through related filters and local closures as an array.
public getRelationConstraints ( string $relation ) : array
$relation string
return array

handle() public method

Handle all filters.
public handle ( ) : Builder
return Illuminate\Database\Eloquent\Builder

input() public method

Retrieve input by key or all input as array.
public input ( null $key = null, null $default = null ) : array | mixed | null
$key null
$default null
return array | mixed | null

push() public method

Will ONLY filter relations if called on additional method.
public push ( $key, null $value = null )
$key
$value null

relationIsFilterable() public method

Check to see if there is input or locally defined methods for the given relation.
public relationIsFilterable ( $relation ) : boolean
$relation
return boolean

relationIsJoined() public method

Checks if the relation to filter's table is already joined.
public relationIsJoined ( $relation ) : boolean
$relation
return boolean

relationIsLocal() public method

Checks to see if there are locally defined relations to filter.
public relationIsLocal ( $related ) : boolean
$related
return boolean

relationUsesFilter() public method

Checks if there is input that should be passed to a related Model Filter.
public relationUsesFilter ( $related ) : boolean
$related
return boolean

relationsEnabled() public method

Checks if filtering by relations is enabled.
public relationsEnabled ( ) : boolean
return boolean

removeEmptyInput() public method

Remove empty strings from the input array.
public removeEmptyInput ( array $input ) : array
$input array
return array

Property Details

$allRelations protected_oe property

Container for all relations (local and related ModelFilters).
protected array $allRelations
return array

$drop_id protected_oe property

Drop _id from the end of input keys when referencing methods.
protected bool $drop_id
return boolean

$input protected_oe property

Array of input to filter.
protected array $input
return array

$localRelatedFilters protected_oe property

(This allows us to not be required to define a filter for the related models).
protected array $localRelatedFilters
return array

$query protected_oe property

protected Builder,Illuminate\Database\Eloquent $query
return Illuminate\Database\Eloquent\Builder

$relations public_oe property

Related Models that have ModelFilters as well as the method on the ModelFilter As [relatedModel => [input_key1, input_key2]].
public array $relations
return array

$relationsEnabled protected_oe property

This is to be able to bypass relations if we are filtering a joined table.
protected bool $relationsEnabled
return boolean