CodeIgniter v4.5 API

Model extends BaseModel
in package

The Model class extends BaseModel and provides additional convenient features that makes working with a SQL database table less painful.

It will:

  • automatically connect to database
  • allow intermingling calls to the builder
  • removes the need to use Result object directly in most cases
Tags
phpstan-import-type

row_array from BaseModel

Table of Contents

Properties

$db  : BaseConnection
Database Connection
$pager  : Pager
Pager instance.
$afterDelete  : array<int, string>
Callbacks for afterDelete
$afterFind  : array<int, string>
Callbacks for afterFind
$afterInsert  : array<int, string>
Callbacks for afterInsert
$afterInsertBatch  : array<int, string>
Callbacks for afterInsertBatch
$afterUpdate  : array<int, string>
Callbacks for afterUpdate
$afterUpdateBatch  : array<int, string>
Callbacks for afterUpdateBatch
$allowCallbacks  : bool
Whether to trigger the defined callbacks
$allowedFields  : array<int, string>
An array of field names that are allowed to be set by the user in inserts/updates.
$allowEmptyInserts  : bool
Whether to allow inserting empty data.
$beforeDelete  : array<int, string>
Callbacks for beforeDelete
$beforeFind  : array<int, string>
Callbacks for beforeFind
$beforeInsert  : array<int, string>
Callbacks for beforeInsert
$beforeInsertBatch  : array<int, string>
Callbacks for beforeInsertBatch
$beforeUpdate  : array<int, string>
Callbacks for beforeUpdate
$beforeUpdateBatch  : array<int, string>
Callbacks for beforeUpdateBatch
$builder  : BaseBuilder|null
Query Builder object
$castHandlers  : array<string, class-string>
Custom convert handlers.
$casts  : array<string, string>
Array of column names and the type of value to cast.
$cleanValidationRules  : bool
Whether rules should be removed that do not exist in the passed data. Used in updates.
$converter  : DataConverter|null
$createdField  : string
The column used for insert timestamps
$dateFormat  : string
The type of column that created_at and updated_at are expected to.
$db  : BaseConnection
Database Connection
$DBGroup  : non-empty-string|null
The Database connection group that should be instantiated.
$deletedField  : string
The column used to save soft delete state
$escape  : array<string|int, mixed>
Escape array that maps usage of escape flag for every parameter.
$insertID  : int|string
Last insert ID
$primaryKey  : string
The table's primary key.
$protectFields  : bool
If this model should use "softDeletes" and simply set a date when rows are deleted, or do hard deletes.
$returnType  : string
The format that the results should be returned as.
$skipValidation  : bool
Skip the model's validation. Used in conjunction with skipValidation() to skip data validation for any future calls.
$table  : string
Name of database table
$tempAllowCallbacks  : bool
Used by allowCallbacks() to override the model's allowCallbacks setting.
$tempData  : array{escape: array, data: array}|array{}
Holds information passed in via 'set' so that we can capture it (not the builder) and ensure it gets validated first.
$tempReturnType  : "array"|"object"|class-string
Used by asArray() and asObject() to provide temporary overrides of model default.
$tempUseSoftDeletes  : bool
Used by withDeleted to override the model's softDelete setting.
$updatedField  : string
The column used for update timestamps
$updateOnlyChanged  : bool
Whether to update Entity's only changed data.
$useAutoIncrement  : bool
Whether primary key uses auto increment.
$useSoftDeletes  : bool
If this model should use "softDeletes" and simply set a date when rows are deleted, or do hard deletes.
$useTimestamps  : bool
If true, will set created_at, and updated_at values during insert and update routines.
$validation  : ValidationInterface|null
Our validator instance.
$validationMessages  : array<string, array<string, string>>
Contains any custom error messages to be used during data validation.
$validationRules  : array<string, array<string, array<string, string>|string>|string>|string
Rules used to validate data in insert(), update(), and save() methods.
$builderMethodsNotAvailable  : array<int, string>
Builder method names that should not be used in the Model.

Methods

__call()  : $this|array<string|int, mixed>|BaseBuilder|bool|float|int|object|string|null
Provides direct access to method in the builder (if available) and the database connection.
__construct()  : mixed
__get()  : array<string|int, mixed>|BaseBuilder|bool|float|int|object|string|null
Provides/instantiates the builder/db connection and model's table/primary key names and return type.
__isset()  : bool
Checks for the existence of properties across this model, builder, and db connection.
allowCallbacks()  : $this
Sets $tempAllowCallbacks value so that we can temporarily override the setting. Resets after the next method that uses triggers.
allowEmptyInserts()  : self
Sets $allowEmptyInserts.
asArray()  : $this
Sets the return type of the results to be as an associative array.
asObject()  : $this
Sets the return type to be of the specified type of object.
builder()  : BaseBuilder
Provides a shared instance of the Query Builder.
chunk()  : void
Loops over records in batches, allowing you to operate on them.
cleanRules()  : $this
Should validation rules be removed before saving? Most handy when doing updates.
countAllResults()  : int|string
Override countAllResults to account for soft deleted accounts.
delete()  : BaseResult|bool
Deletes a single record from the database where $id matches.
errors()  : array<string, string>
Grabs the last error(s) that occurred. If data was validated, it will first check for errors there, otherwise will try to grab the last error from the Database connection.
find()  : array<string|int, mixed>|object|null
Fetches the row of database.
findAll()  : array<string|int, mixed>
Fetches all results, while optionally limiting them.
findColumn()  : array<string|int, mixed>|null
Fetches the column of database.
first()  : array<string|int, mixed>|object|null
Returns the first row of the result set.
getIdValue()  : array<string|int, mixed>|int|string|null
Returns the id value for the data array or object
getInsertID()  : int|string
Returns last insert ID or 0.
getValidationMessages()  : array<string|int, mixed>
Returns the model's validation messages, so they can be used elsewhere, if needed.
getValidationRules()  : array<string|int, mixed>
Returns the model's defined validation rules so that they can be used elsewhere, if needed.
groupBy()  : $this
groupEnd()  : $this
groupStart()  : $this
having()  : $this
havingGroupEnd()  : $this
havingGroupStart()  : $this
havingIn()  : $this
havingLike()  : $this
havingNotIn()  : $this
insert()  : bool|int|string
Inserts data into the database. If an object is provided, it will attempt to convert it to an array.
insertBatch()  : bool|int
Compiles batch insert runs the queries, validating each row prior.
join()  : $this
like()  : $this
limit()  : $this
notGroupStart()  : $this
notHavingGroupStart()  : $this
notHavingLike()  : $this
notLike()  : $this
offset()  : $this
onlyDeleted()  : $this
Works with the find* methods to return only the rows that have been deleted.
orderBy()  : $this
orGroupStart()  : $this
orHaving()  : $this
orHavingGroupStart()  : $this
orHavingIn()  : $this
orHavingLike()  : $this
orHavingNotIn()  : $this
orLike()  : $this
orNotGroupStart()  : $this
orNotHavingGroupStart()  : $this
orNotHavingLike()  : $this
orNotLike()  : $this
orWhere()  : $this
orWhereIn()  : $this
orWhereNotIn()  : $this
paginate()  : array<string|int, mixed>|null
Works with Pager to get the size and offset parameters.
protect()  : $this
Sets whether or not we should whitelist data set during updates or inserts against $this->availableFields.
purgeDeleted()  : bool|string
Permanently deletes all rows that have been marked as deleted through soft deletes (deleted = 1).
replace()  : BaseResult|false|Query|string
Compiles a replace and runs the query.
save()  : bool
A convenience method that will attempt to determine whether the data should be inserted or updated. Will work with either an array or object. When using with custom class objects, you must ensure that the class will provide access to the class variables, even if through a magic method.
select()  : $this
selectAvg()  : $this
selectCount()  : $this
selectMax()  : $this
selectMin()  : $this
selectSum()  : $this
set()  : $this
Captures the builder's set() method so that we can validate the data here. This allows it to be used with any of the other builder methods and still get validated data, like replace.
setAllowedFields()  : $this
It could be used when you have to change default or override current allowed fields.
setTable()  : $this
Specify the table associated with a model
setValidationMessage()  : $this
Allows to set field wise validation message.
setValidationMessages()  : $this
Allows to set (and reset) validation messages.
setValidationRule()  : $this
Allows to set field wise validation rules.
setValidationRules()  : $this
Allows to set (and reset) validation rules.
skipValidation()  : $this
Set the value of the skipValidation flag.
update()  : bool
Updates a single record in the database. If an object is provided, it will attempt to convert it into an array.
updateBatch()  : false|int|array<int, string>
Compiles an update and runs the query.
validate()  : bool
Validate the row data against the validation rules (or the validation group) specified in the class property, $validationRules.
when()  : $this
whenNot()  : $this
where()  : $this
whereIn()  : $this
whereNotIn()  : $this
withDeleted()  : $this
Sets $useSoftDeletes value so that we can temporarily override the soft deletes settings. Can be used for all find* methods.
cleanValidationRules()  : array<string|int, mixed>
Removes any rules that apply to fields that have not been set currently so that rules don't block updating when only updating a partial row.
convertToReturnType()  : array<string|int, mixed>|object
Converts database data array to return type value.
createDataConverter()  : void
Creates DataConverter instance.
doDelete()  : bool|string
Deletes a single record from $this->table where $id matches the table's primaryKey This method works only with dbCalls.
doErrors()  : array<string, string>
Grabs the last error(s) that occurred from the Database connection.
doFind()  : array<string|int, mixed>|object|null
Fetches the row of database from $this->table with a primary key matching $id.
doFindAll()  : array<string|int, mixed>
Works with the current Query Builder instance to return all results, while optionally limiting them.
doFindColumn()  : array<string|int, mixed>|null
Fetches the column of database from $this->table.
doFirst()  : array<string|int, mixed>|object|null
Returns the first row of the result set. Will take any previous Query Builder calls into account when determining the result set.
doInsert()  : bool
Inserts data into the current table.
doInsertBatch()  : bool|int
Compiles batch insert strings and runs the queries, validating each row prior.
doOnlyDeleted()  : void
Works with the find* methods to return only the rows that have been deleted.
doProtectFields()  : array<string|int, mixed>
Ensures that only the fields that are allowed to be updated are in the data array.
doProtectFieldsForInsert()  : array<string|int, mixed>
Ensures that only the fields that are allowed to be inserted are in the data array.
doPurgeDeleted()  : bool|string
Permanently deletes all rows that have been marked as deleted through soft deletes (deleted = 1) This method works only with dbCalls.
doReplace()  : BaseResult|false|Query|string
Compiles a replace into string and runs the query This method works only with dbCalls.
doUpdate()  : bool
Updates a single record in $this->table.
doUpdateBatch()  : false|int|array<int, string>
Compiles an update string and runs the query This method works only with dbCalls.
ensureValidation()  : void
initialize()  : void
Initializes the instance with any additional steps.
intToDate()  : int|string
A utility function to allow child models to use the type of date/time format that they prefer. This is primarily used for setting created_at, updated_at and deleted_at values, but can be used by inheriting classes.
objectToArray()  : array<string, mixed>
Takes a class and returns an array of its public and protected properties as an array suitable for use in creates and updates.
objectToRawArray()  : array<string, mixed>
Takes a class and returns an array of its public and protected properties as an array with raw values.
setCreatedField()  : array<string|int, mixed>
Set datetime to created field.
setDate()  : int|string
Sets the date or current date if null value is passed.
setUpdatedField()  : array<string|int, mixed>
Set datetime to updated field.
shouldUpdate()  : bool
This method is called on save to determine if entry have to be updated If this method return false insert operation will be executed
timeToDate()  : int|string
Converts Time value to string using $this->dateFormat.
timeToString()  : array<string, mixed>
Convert any Time instances to appropriate $dateFormat.
transformDataToArray()  : array<string|int, mixed>
Transform data to array.
trigger()  : array<string|int, mixed>
A simple event trigger for Model Events that allows additional data manipulation within the model. Specifically intended for usage by child models this can be used to format data, save/load related classes, etc.
useCasts()  : bool
Are casts used?
checkBuilderMethod()  : void
Checks the Builder method name that should not be used in the Model.

Properties

$pager

Pager instance.

public Pager $pager

Populated after calling $this->paginate()

$afterDelete

Callbacks for afterDelete

protected array<int, string> $afterDelete = []

$afterFind

Callbacks for afterFind

protected array<int, string> $afterFind = []

$afterInsert

Callbacks for afterInsert

protected array<int, string> $afterInsert = []

$afterInsertBatch

Callbacks for afterInsertBatch

protected array<int, string> $afterInsertBatch = []

$afterUpdate

Callbacks for afterUpdate

protected array<int, string> $afterUpdate = []

$afterUpdateBatch

Callbacks for afterUpdateBatch

protected array<int, string> $afterUpdateBatch = []

$allowCallbacks

Whether to trigger the defined callbacks

protected bool $allowCallbacks = true

$allowedFields

An array of field names that are allowed to be set by the user in inserts/updates.

protected array<int, string> $allowedFields = []

$allowEmptyInserts

Whether to allow inserting empty data.

protected bool $allowEmptyInserts = false

$beforeDelete

Callbacks for beforeDelete

protected array<int, string> $beforeDelete = []

$beforeFind

Callbacks for beforeFind

protected array<int, string> $beforeFind = []

$beforeInsert

Callbacks for beforeInsert

protected array<int, string> $beforeInsert = []

$beforeInsertBatch

Callbacks for beforeInsertBatch

protected array<int, string> $beforeInsertBatch = []

$beforeUpdate

Callbacks for beforeUpdate

protected array<int, string> $beforeUpdate = []

$beforeUpdateBatch

Callbacks for beforeUpdateBatch

protected array<int, string> $beforeUpdateBatch = []

$castHandlers

Custom convert handlers.

protected array<string, class-string> $castHandlers = []

[type => classname]

$casts

Array of column names and the type of value to cast.

protected array<string, string> $casts = []

[column => type]

$cleanValidationRules

Whether rules should be removed that do not exist in the passed data. Used in updates.

protected bool $cleanValidationRules = true

$createdField

The column used for insert timestamps

protected string $createdField = 'created_at'

$dateFormat

The type of column that created_at and updated_at are expected to.

protected string $dateFormat = 'datetime'

Allowed: 'datetime', 'date', 'int'

$DBGroup

The Database connection group that should be instantiated.

protected non-empty-string|null $DBGroup

$deletedField

The column used to save soft delete state

protected string $deletedField = 'deleted_at'

$escape

Escape array that maps usage of escape flag for every parameter.

protected array<string|int, mixed> $escape = []

$insertID

Last insert ID

protected int|string $insertID = 0

$primaryKey

The table's primary key.

protected string $primaryKey = 'id'

$protectFields

If this model should use "softDeletes" and simply set a date when rows are deleted, or do hard deletes.

protected bool $protectFields = true

$returnType

The format that the results should be returned as.

protected string $returnType = 'array'

Will be overridden if the as* methods are used.

$skipValidation

Skip the model's validation. Used in conjunction with skipValidation() to skip data validation for any future calls.

protected bool $skipValidation = false

$table

Name of database table

protected string $table

$tempAllowCallbacks

Used by allowCallbacks() to override the model's allowCallbacks setting.

protected bool $tempAllowCallbacks

$tempData

Holds information passed in via 'set' so that we can capture it (not the builder) and ensure it gets validated first.

protected array{escape: array, data: array}|array{} $tempData = []
Tags
phpstan-var

array{escape: array<int|string, bool|null>, data: row_array}|array}

$tempReturnType

Used by asArray() and asObject() to provide temporary overrides of model default.

protected "array"|"object"|class-string $tempReturnType

$tempUseSoftDeletes

Used by withDeleted to override the model's softDelete setting.

protected bool $tempUseSoftDeletes

$updatedField

The column used for update timestamps

protected string $updatedField = 'updated_at'

$updateOnlyChanged

Whether to update Entity's only changed data.

protected bool $updateOnlyChanged = true

$useAutoIncrement

Whether primary key uses auto increment.

protected bool $useAutoIncrement = true

$useSoftDeletes

If this model should use "softDeletes" and simply set a date when rows are deleted, or do hard deletes.

protected bool $useSoftDeletes = false

$useTimestamps

If true, will set created_at, and updated_at values during insert and update routines.

protected bool $useTimestamps = false

$validationMessages

Contains any custom error messages to be used during data validation.

protected array<string, array<string, string>> $validationMessages = []

$builderMethodsNotAvailable

Builder method names that should not be used in the Model.

private array<int, string> $builderMethodsNotAvailable = ['getCompiledInsert', 'getCompiledSelect', 'getCompiledUpdate']

method name

Methods

__call()

Provides direct access to method in the builder (if available) and the database connection.

public __call(string $name, array<string|int, mixed> $params) : $this|array<string|int, mixed>|BaseBuilder|bool|float|int|object|string|null
Parameters
$name : string

Name

$params : array<string|int, mixed>

Params

Return values
$this|array<string|int, mixed>|BaseBuilder|bool|float|int|object|string|null

__get()

Provides/instantiates the builder/db connection and model's table/primary key names and return type.

public __get(string $name) : array<string|int, mixed>|BaseBuilder|bool|float|int|object|string|null
Parameters
$name : string

Name

Return values
array<string|int, mixed>|BaseBuilder|bool|float|int|object|string|null

__isset()

Checks for the existence of properties across this model, builder, and db connection.

public __isset(string $name) : bool
Parameters
$name : string

Name

Return values
bool

allowCallbacks()

Sets $tempAllowCallbacks value so that we can temporarily override the setting. Resets after the next method that uses triggers.

public allowCallbacks([bool $val = true ]) : $this
Parameters
$val : bool = true

value

Return values
$this

allowEmptyInserts()

Sets $allowEmptyInserts.

public allowEmptyInserts([bool $value = true ]) : self
Parameters
$value : bool = true
Return values
self

asArray()

Sets the return type of the results to be as an associative array.

public asArray() : $this
Return values
$this

asObject()

Sets the return type to be of the specified type of object.

public asObject(["object"|class-string $class = 'object' ]) : $this

Defaults to a simple object, but can be any class that has class vars with the same name as the collection columns, or at least allows them to be created.

Parameters
$class : "object"|class-string = 'object'

Class Name

Return values
$this

builder()

Provides a shared instance of the Query Builder.

public builder([non-empty-string|null $table = null ]) : BaseBuilder
Parameters
$table : non-empty-string|null = null
Tags
throws
ModelException
Return values
BaseBuilder

chunk()

Loops over records in batches, allowing you to operate on them.

public chunk(int $size, Closure $userFunc) : void

Works with $this->builder to get the Compiled select to determine the rows to operate on. This method works only with dbCalls.

Parameters
$size : int

Size

$userFunc : Closure

Callback Function

Tags
throws
DataException

cleanRules()

Should validation rules be removed before saving? Most handy when doing updates.

public cleanRules([bool $choice = false ]) : $this
Parameters
$choice : bool = false

Value

Return values
$this

countAllResults()

Override countAllResults to account for soft deleted accounts.

public countAllResults([bool $reset = true ][, bool $test = false ]) : int|string
Parameters
$reset : bool = true

Reset

$test : bool = false

Test

Return values
int|string

delete()

Deletes a single record from the database where $id matches.

public delete([array<string|int, mixed>|int|string|null $id = null ][, bool $purge = false ]) : BaseResult|bool
Parameters
$id : array<string|int, mixed>|int|string|null = null

The rows primary key(s)

$purge : bool = false

Allows overriding the soft deletes setting.

Tags
throws
DatabaseException
Return values
BaseResult|bool

errors()

Grabs the last error(s) that occurred. If data was validated, it will first check for errors there, otherwise will try to grab the last error from the Database connection.

public errors([bool $forceDB = false ]) : array<string, string>

The return array should be in the following format: ['source' => 'message']

Parameters
$forceDB : bool = false

Always grab the db error, not validation

Return values
array<string, string>

find()

Fetches the row of database.

public find([array<string|int, mixed>|int|string|null $id = null ]) : array<string|int, mixed>|object|null
Parameters
$id : array<string|int, mixed>|int|string|null = null

One primary key or an array of primary keys

Tags
phpstan-return

($id is int|string ? row_array|object|null : list<row_array|object>)

Return values
array<string|int, mixed>|object|null

The resulting row of data, or null.

findAll()

Fetches all results, while optionally limiting them.

public findAll([int $limit = null ][, int $offset = 0 ]) : array<string|int, mixed>
Parameters
$limit : int = null

Limit

$offset : int = 0

Offset

Return values
array<string|int, mixed>

findColumn()

Fetches the column of database.

public findColumn(string $columnName) : array<string|int, mixed>|null
Parameters
$columnName : string

Column Name

Tags
throws
DataException
Return values
array<string|int, mixed>|null

The resulting row of data, or null if no data found.

first()

Returns the first row of the result set.

public first() : array<string|int, mixed>|object|null
Return values
array<string|int, mixed>|object|null

getIdValue()

Returns the id value for the data array or object

public getIdValue(array<string|int, mixed>|object $row) : array<string|int, mixed>|int|string|null
Parameters
$row : array<string|int, mixed>|object

Row data

Tags
phpstan-param

row_array|object $row

Return values
array<string|int, mixed>|int|string|null

getInsertID()

Returns last insert ID or 0.

public getInsertID() : int|string
Return values
int|string

getValidationMessages()

Returns the model's validation messages, so they can be used elsewhere, if needed.

public getValidationMessages() : array<string|int, mixed>
Return values
array<string|int, mixed>

getValidationRules()

Returns the model's defined validation rules so that they can be used elsewhere, if needed.

public getValidationRules([array<string|int, mixed> $options = [] ]) : array<string|int, mixed>
Parameters
$options : array<string|int, mixed> = []

Options

Return values
array<string|int, mixed>

groupBy()

public groupBy(mixed $by, bool|null $escape = null) : $this
Parameters
$by : mixed
$escape = null : bool|null
Return values
$this

groupEnd()

public groupEnd() : $this
Return values
$this

groupStart()

public groupStart() : $this
Return values
$this

having()

public having(mixed $key, mixed $value, bool|null $escape = null) : $this
Parameters
$key : mixed
$value : mixed
$escape = null : bool|null
Return values
$this

havingGroupEnd()

public havingGroupEnd() : $this
Return values
$this

havingGroupStart()

public havingGroupStart() : $this
Return values
$this

havingIn()

public havingIn(string|null $key = null, mixed $values, bool|null $escape = null) : $this
Parameters
$key = null : string|null
$values : mixed
$escape = null : bool|null
Return values
$this

havingLike()

public havingLike(mixed $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false) : $this
Parameters
$field : mixed
$match = '' : string
$side = 'both' : string
$escape = null : bool|null
$insensitiveSearch = false : bool
Return values
$this

havingNotIn()

public havingNotIn(string|null $key = null, mixed $values, bool|null $escape = null) : $this
Parameters
$key = null : string|null
$values : mixed
$escape = null : bool|null
Return values
$this

insert()

Inserts data into the database. If an object is provided, it will attempt to convert it to an array.

public insert([array<string|int, mixed>|object|null $row = null ][, bool $returnID = true ]) : bool|int|string
Parameters
$row : array<string|int, mixed>|object|null = null
$returnID : bool = true

Whether insert ID should be returned or not.

Tags
phpstan-param

row_array|object|null $row

phpstan-return

($returnID is true ? int|string|false : bool)

throws
ReflectionException
Return values
bool|int|string

insertBatch()

Compiles batch insert runs the queries, validating each row prior.

public insertBatch([array<int, array<string|int, mixed>|object>|null $set = null ][, bool|null $escape = null ][, int $batchSize = 100 ][, bool $testing = false ]) : bool|int
Parameters
$set : array<int, array<string|int, mixed>|object>|null = null

an associative array of insert values

$escape : bool|null = null

Whether to escape values

$batchSize : int = 100

The size of the batch to run

$testing : bool = false

True means only number of records is returned, false will execute the query

Tags
phpstan-param

list<row_array|object>|null $set

throws
ReflectionException
Return values
bool|int

Number of rows inserted or FALSE on failure

join()

public join(string $table, string $cond, string $type = '', bool|null $escape = null) : $this
Parameters
$table : string
$cond : string
$type = '' : string
$escape = null : bool|null
Return values
$this

like()

public like(mixed $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false) : $this
Parameters
$field : mixed
$match = '' : string
$side = 'both' : string
$escape = null : bool|null
$insensitiveSearch = false : bool
Return values
$this

limit()

public limit(int|null $value = null, int|null $offset = 0) : $this
Parameters
$value = null : int|null
$offset = 0 : int|null
Return values
$this

notGroupStart()

public notGroupStart() : $this
Return values
$this

notHavingGroupStart()

public notHavingGroupStart() : $this
Return values
$this

notHavingLike()

public notHavingLike(mixed $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false) : $this
Parameters
$field : mixed
$match = '' : string
$side = 'both' : string
$escape = null : bool|null
$insensitiveSearch = false : bool
Return values
$this

notLike()

public notLike(mixed $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false) : $this
Parameters
$field : mixed
$match = '' : string
$side = 'both' : string
$escape = null : bool|null
$insensitiveSearch = false : bool
Return values
$this

offset()

public offset(int $offset) : $this
Parameters
$offset : int
Return values
$this

onlyDeleted()

Works with the find* methods to return only the rows that have been deleted.

public onlyDeleted() : $this
Return values
$this

orderBy()

public orderBy(string $orderBy, string $direction = '', bool|null $escape = null) : $this
Parameters
$orderBy : string
$direction = '' : string
$escape = null : bool|null
Return values
$this

orGroupStart()

public orGroupStart() : $this
Return values
$this

orHaving()

public orHaving(mixed $key, mixed $value, bool|null $escape = null) : $this
Parameters
$key : mixed
$value : mixed
$escape = null : bool|null
Return values
$this

orHavingGroupStart()

public orHavingGroupStart() : $this
Return values
$this

orHavingIn()

public orHavingIn(string|null $key = null, mixed $values, bool|null $escape = null) : $this
Parameters
$key = null : string|null
$values : mixed
$escape = null : bool|null
Return values
$this

orHavingLike()

public orHavingLike(mixed $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false) : $this
Parameters
$field : mixed
$match = '' : string
$side = 'both' : string
$escape = null : bool|null
$insensitiveSearch = false : bool
Return values
$this

orHavingNotIn()

public orHavingNotIn(string|null $key = null, mixed $values, bool|null $escape = null) : $this
Parameters
$key = null : string|null
$values : mixed
$escape = null : bool|null
Return values
$this

orLike()

public orLike(mixed $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false) : $this
Parameters
$field : mixed
$match = '' : string
$side = 'both' : string
$escape = null : bool|null
$insensitiveSearch = false : bool
Return values
$this

orNotGroupStart()

public orNotGroupStart() : $this
Return values
$this

orNotHavingGroupStart()

public orNotHavingGroupStart() : $this
Return values
$this

orNotHavingLike()

public orNotHavingLike(mixed $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false) : $this
Parameters
$field : mixed
$match = '' : string
$side = 'both' : string
$escape = null : bool|null
$insensitiveSearch = false : bool
Return values
$this

orNotLike()

public orNotLike(mixed $field, string $match = '', string $side = 'both', bool|null $escape = null, bool $insensitiveSearch = false) : $this
Parameters
$field : mixed
$match = '' : string
$side = 'both' : string
$escape = null : bool|null
$insensitiveSearch = false : bool
Return values
$this

orWhere()

public orWhere(mixed $key, mixed $value, bool|null $escape = null) : $this
Parameters
$key : mixed
$value : mixed
$escape = null : bool|null
Return values
$this

orWhereIn()

public orWhereIn(string|null $key = null, mixed $values, bool|null $escape = null) : $this
Parameters
$key = null : string|null
$values : mixed
$escape = null : bool|null
Return values
$this

orWhereNotIn()

public orWhereNotIn(string|null $key = null, mixed $values, bool|null $escape = null) : $this
Parameters
$key = null : string|null
$values : mixed
$escape = null : bool|null
Return values
$this

paginate()

Works with Pager to get the size and offset parameters.

public paginate([int|null $perPage = null ][, string $group = 'default' ][, int|null $page = null ][, int $segment = 0 ]) : array<string|int, mixed>|null

Expects a GET variable (?page=2) that specifies the page of results to display.

Parameters
$perPage : int|null = null

Items per page

$group : string = 'default'

Will be used by the pagination library to identify a unique pagination set.

$page : int|null = null

Optional page number (useful when the page number is provided in different way)

$segment : int = 0

Optional URI segment number (if page number is provided by URI segment)

Return values
array<string|int, mixed>|null

protect()

Sets whether or not we should whitelist data set during updates or inserts against $this->availableFields.

public protect([bool $protect = true ]) : $this
Parameters
$protect : bool = true

Value

Return values
$this

purgeDeleted()

Permanently deletes all rows that have been marked as deleted through soft deletes (deleted = 1).

public purgeDeleted() : bool|string
Return values
bool|string

Returns a string if in test mode.

replace()

Compiles a replace and runs the query.

public replace([array<string|int, mixed>|null $row = null ][, bool $returnSQL = false ]) : BaseResult|false|Query|string
Parameters
$row : array<string|int, mixed>|null = null

Row data

$returnSQL : bool = false

Set to true to return Query String

Tags
phpstan-param

row_array|null $row

Return values
BaseResult|false|Query|string

save()

A convenience method that will attempt to determine whether the data should be inserted or updated. Will work with either an array or object. When using with custom class objects, you must ensure that the class will provide access to the class variables, even if through a magic method.

public save(array<string|int, mixed>|object $row) : bool
Parameters
$row : array<string|int, mixed>|object

Row data

Tags
phpstan-param

row_array|object $row

throws
ReflectionException
Return values
bool

select()

public select(mixed $select, bool|null $escape = null) : $this
Parameters
$select : mixed
$escape = null : bool|null
Return values
$this

selectAvg()

public selectAvg(string $select = '', string $alias = '') : $this
Parameters
$select = '' : string
$alias = '' : string
Return values
$this

selectCount()

public selectCount(string $select = '', string $alias = '') : $this
Parameters
$select = '' : string
$alias = '' : string
Return values
$this

selectMax()

public selectMax(string $select = '', string $alias = '') : $this
Parameters
$select = '' : string
$alias = '' : string
Return values
$this

selectMin()

public selectMin(string $select = '', string $alias = '') : $this
Parameters
$select = '' : string
$alias = '' : string
Return values
$this

selectSum()

public selectSum(string $select = '', string $alias = '') : $this
Parameters
$select = '' : string
$alias = '' : string
Return values
$this

set()

Captures the builder's set() method so that we can validate the data here. This allows it to be used with any of the other builder methods and still get validated data, like replace.

public set(array<string|int, mixed>|object|string $key[, bool|float|int|object|string|null $value = '' ][, bool|null $escape = null ]) : $this
Parameters
$key : array<string|int, mixed>|object|string

Field name, or an array of field/value pairs, or an object

$value : bool|float|int|object|string|null = ''

Field value, if $key is a single field

$escape : bool|null = null

Whether to escape values

Return values
$this

setAllowedFields()

It could be used when you have to change default or override current allowed fields.

public setAllowedFields(array<string|int, mixed> $allowedFields) : $this
Parameters
$allowedFields : array<string|int, mixed>

Array with names of fields

Return values
$this

setTable()

Specify the table associated with a model

public setTable(string $table) : $this
Parameters
$table : string

Table

Return values
$this

setValidationMessage()

Allows to set field wise validation message.

public setValidationMessage(string $field, array<string|int, mixed> $fieldMessages) : $this

It could be used when you have to change default or override current validate messages.

Parameters
$field : string

Field Name

$fieldMessages : array<string|int, mixed>

Validation messages

Return values
$this

setValidationMessages()

Allows to set (and reset) validation messages.

public setValidationMessages(array<string|int, mixed> $validationMessages) : $this

It could be used when you have to change default or override current validate messages.

Parameters
$validationMessages : array<string|int, mixed>

Value

Return values
$this

setValidationRule()

Allows to set field wise validation rules.

public setValidationRule(string $field, array<string|int, mixed>|string $fieldRules) : $this

It could be used when you have to change default or override current validate rules.

Parameters
$field : string

Field Name

$fieldRules : array<string|int, mixed>|string

Validation rules

Return values
$this

setValidationRules()

Allows to set (and reset) validation rules.

public setValidationRules(array<string, array<string, array<string, string>|string>|string> $validationRules) : $this

It could be used when you have to change default or override current validate rules.

Parameters
$validationRules : array<string, array<string, array<string, string>|string>|string>

Value

Return values
$this

skipValidation()

Set the value of the skipValidation flag.

public skipValidation([bool $skip = true ]) : $this
Parameters
$skip : bool = true

Value

Return values
$this

update()

Updates a single record in the database. If an object is provided, it will attempt to convert it into an array.

public update([array<string|int, mixed>|int|string|null $id = null ][, array<string|int, mixed>|object|null $row = null ]) : bool
Parameters
$id : array<string|int, mixed>|int|string|null = null
$row : array<string|int, mixed>|object|null = null
Tags
phpstan-param

row_array|object|null $row

throws
ReflectionException
Return values
bool

updateBatch()

Compiles an update and runs the query.

public updateBatch([array<int, array<string|int, mixed>|object>|null $set = null ][, string|null $index = null ][, int $batchSize = 100 ][, bool $returnSQL = false ]) : false|int|array<int, string>
Parameters
$set : array<int, array<string|int, mixed>|object>|null = null

an associative array of insert values

$index : string|null = null

The where key

$batchSize : int = 100

The size of the batch to run

$returnSQL : bool = false

True means SQL is returned, false will execute the query

Tags
phpstan-param

list<row_array|object>|null $set

throws
DatabaseException
throws
ReflectionException
Return values
false|int|array<int, string>

Number of rows affected or FALSE on failure, SQL array when testMode

validate()

Validate the row data against the validation rules (or the validation group) specified in the class property, $validationRules.

public validate(array<string|int, mixed>|object $row) : bool
Parameters
$row : array<string|int, mixed>|object

Row data

Tags
phpstan-param

row_array|object $row

Return values
bool

when()

public when(mixed $condition, callable $callback, callable|null $defaultCallback = null) : $this
Parameters
$condition : mixed
$callback : callable
$defaultCallback = null : callable|null
Return values
$this

whenNot()

public whenNot(mixed $condition, callable $callback, callable|null $defaultCallback = null) : $this
Parameters
$condition : mixed
$callback : callable
$defaultCallback = null : callable|null
Return values
$this

where()

public where(mixed $key, mixed $value, bool|null $escape = null) : $this
Parameters
$key : mixed
$value : mixed
$escape = null : bool|null
Return values
$this

whereIn()

public whereIn(string|null $key = null, mixed $values, bool|null $escape = null) : $this
Parameters
$key = null : string|null
$values : mixed
$escape = null : bool|null
Return values
$this

whereNotIn()

public whereNotIn(string|null $key = null, mixed $values, bool|null $escape = null) : $this
Parameters
$key = null : string|null
$values : mixed
$escape = null : bool|null
Return values
$this

withDeleted()

Sets $useSoftDeletes value so that we can temporarily override the soft deletes settings. Can be used for all find* methods.

public withDeleted([bool $val = true ]) : $this
Parameters
$val : bool = true

Value

Return values
$this

cleanValidationRules()

Removes any rules that apply to fields that have not been set currently so that rules don't block updating when only updating a partial row.

protected cleanValidationRules(array<string|int, mixed> $rules[, array<string|int, mixed> $row = null ]) : array<string|int, mixed>
Parameters
$rules : array<string|int, mixed>

Array containing field name and rule

$row : array<string|int, mixed> = null

Row data (@TODO Remove null in param type)

Tags
phpstan-param

row_array $row

Return values
array<string|int, mixed>

convertToReturnType()

Converts database data array to return type value.

protected convertToReturnType(array<string, mixed> $row, "array"|"object"|class-string $returnType) : array<string|int, mixed>|object
Parameters
$row : array<string, mixed>

Raw data from database

$returnType : "array"|"object"|class-string
Return values
array<string|int, mixed>|object

createDataConverter()

Creates DataConverter instance.

protected createDataConverter() : void

doDelete()

Deletes a single record from $this->table where $id matches the table's primaryKey This method works only with dbCalls.

protected doDelete([array<string|int, mixed>|int|string|null $id = null ][, bool $purge = false ]) : bool|string
Parameters
$id : array<string|int, mixed>|int|string|null = null

The rows primary key(s)

$purge : bool = false

Allows overriding the soft deletes setting.

Tags
throws
DatabaseException
Return values
bool|string

SQL string when testMode

doErrors()

Grabs the last error(s) that occurred from the Database connection.

protected doErrors() : array<string, string>

The return array should be in the following format: ['source' => 'message'] This method works only with dbCalls.

Return values
array<string, string>

doFind()

Fetches the row of database from $this->table with a primary key matching $id.

protected doFind(bool $singleton[, array<string|int, mixed>|int|string|null $id = null ]) : array<string|int, mixed>|object|null

This method works only with dbCalls.

Parameters
$singleton : bool

Single or multiple results

$id : array<string|int, mixed>|int|string|null = null

One primary key or an array of primary keys

Tags
phpstan-return

($singleton is true ? row_array|null|object : list<row_array|object>)

Return values
array<string|int, mixed>|object|null

The resulting row of data, or null.

doFindAll()

Works with the current Query Builder instance to return all results, while optionally limiting them.

protected doFindAll([int|null $limit = null ][, int $offset = 0 ]) : array<string|int, mixed>

This method works only with dbCalls.

Parameters
$limit : int|null = null

Limit

$offset : int = 0

Offset

Tags
phpstan-return

list<row_array|object>

Return values
array<string|int, mixed>

doFindColumn()

Fetches the column of database from $this->table.

protected doFindColumn(string $columnName) : array<string|int, mixed>|null

This method works only with dbCalls.

Parameters
$columnName : string

Column Name

Tags
phpstan-return

list<row_array>|null

Return values
array<string|int, mixed>|null

The resulting row of data, or null if no data found.

doFirst()

Returns the first row of the result set. Will take any previous Query Builder calls into account when determining the result set.

protected doFirst() : array<string|int, mixed>|object|null

This method works only with dbCalls.

Tags
phpstan-return

row_array|object|null

Return values
array<string|int, mixed>|object|null

doInsert()

Inserts data into the current table.

protected doInsert(array<string|int, mixed> $row) : bool

This method works only with dbCalls.

Parameters
$row : array<string|int, mixed>

Row data

Tags
phpstan-param

row_array $row

Return values
bool

doInsertBatch()

Compiles batch insert strings and runs the queries, validating each row prior.

protected doInsertBatch([array<string|int, mixed>|null $set = null ][, bool|null $escape = null ][, int $batchSize = 100 ][, bool $testing = false ]) : bool|int

This method works only with dbCalls.

Parameters
$set : array<string|int, mixed>|null = null

An associative array of insert values

$escape : bool|null = null

Whether to escape values

$batchSize : int = 100

The size of the batch to run

$testing : bool = false

True means only number of records is returned, false will execute the query

Return values
bool|int

Number of rows inserted or FALSE on failure

doOnlyDeleted()

Works with the find* methods to return only the rows that have been deleted.

protected doOnlyDeleted() : void

This method works only with dbCalls.

doProtectFields()

Ensures that only the fields that are allowed to be updated are in the data array.

protected doProtectFields(array<string|int, mixed> $row) : array<string|int, mixed>
Parameters
$row : array<string|int, mixed>

Row data

Tags
used-by

update() to protect against mass assignment vulnerabilities.

used-by

updateBatch() to protect against mass assignment vulnerabilities.

phpstan-param

row_array $row

throws
DataException
Return values
array<string|int, mixed>

doProtectFieldsForInsert()

Ensures that only the fields that are allowed to be inserted are in the data array.

protected doProtectFieldsForInsert(array<string|int, mixed> $row) : array<string|int, mixed>
Parameters
$row : array<string|int, mixed>

Row data

Tags
used-by

insert() to protect against mass assignment vulnerabilities.

used-by

insertBatch() to protect against mass assignment vulnerabilities.

phpstan-param

row_array $row

throws
DataException
Return values
array<string|int, mixed>

doPurgeDeleted()

Permanently deletes all rows that have been marked as deleted through soft deletes (deleted = 1) This method works only with dbCalls.

protected doPurgeDeleted() : bool|string
Return values
bool|string

Returns a SQL string if in test mode.

doReplace()

Compiles a replace into string and runs the query This method works only with dbCalls.

protected doReplace([array<string|int, mixed>|null $row = null ][, bool $returnSQL = false ]) : BaseResult|false|Query|string
Parameters
$row : array<string|int, mixed>|null = null

Data

$returnSQL : bool = false

Set to true to return Query String

Tags
phpstan-param

row_array|null $row

Return values
BaseResult|false|Query|string

doUpdate()

Updates a single record in $this->table.

protected doUpdate([array<string|int, mixed>|int|string|null $id = null ][, array<string|int, mixed>|null $row = null ]) : bool

This method works only with dbCalls.

Parameters
$id : array<string|int, mixed>|int|string|null = null
$row : array<string|int, mixed>|null = null

Row data

Tags
phpstan-param

row_array|null $row

Return values
bool

doUpdateBatch()

Compiles an update string and runs the query This method works only with dbCalls.

protected doUpdateBatch([array<string|int, mixed>|null $set = null ][, string|null $index = null ][, int $batchSize = 100 ][, bool $returnSQL = false ]) : false|int|array<int, string>
Parameters
$set : array<string|int, mixed>|null = null

An associative array of update values

$index : string|null = null

The where key

$batchSize : int = 100

The size of the batch to run

$returnSQL : bool = false

True means SQL is returned, false will execute the query

Tags
throws
DatabaseException
Return values
false|int|array<int, string>

Number of rows affected or FALSE on failure, SQL array when testMode

ensureValidation()

protected ensureValidation() : void

initialize()

Initializes the instance with any additional steps.

protected initialize() : void

Optionally implemented by child classes.

intToDate()

A utility function to allow child models to use the type of date/time format that they prefer. This is primarily used for setting created_at, updated_at and deleted_at values, but can be used by inheriting classes.

protected intToDate(int $value) : int|string

The available time formats are:

  • 'int' - Stores the date as an integer timestamp
  • 'datetime' - Stores the data in the SQL datetime format
  • 'date' - Stores the date (only) in the SQL date format.
Parameters
$value : int

value

Tags
throws
ModelException
Return values
int|string

objectToArray()

Takes a class and returns an array of its public and protected properties as an array suitable for use in creates and updates.

protected objectToArray(object $object[, bool $onlyChanged = true ][, bool $recursive = false ]) : array<string, mixed>

This method uses objectToRawArray() internally and does conversion to string on all Time instances

Parameters
$object : object

Object

$onlyChanged : bool = true

Only Changed Property

$recursive : bool = false

If true, inner entities will be cast as array as well

Tags
throws
ReflectionException
Return values
array<string, mixed>

objectToRawArray()

Takes a class and returns an array of its public and protected properties as an array with raw values.

protected objectToRawArray(object $object[, bool $onlyChanged = true ][, bool $recursive = false ]) : array<string, mixed>
Parameters
$object : object

Object

$onlyChanged : bool = true

Only Changed Property

$recursive : bool = false

If true, inner entities will be cast as array as well

Tags
throws
ReflectionException
Return values
array<string, mixed>

Array with raw values.

setCreatedField()

Set datetime to created field.

protected setCreatedField(array<string|int, mixed> $row, int|string $date) : array<string|int, mixed>
Parameters
$row : array<string|int, mixed>
$date : int|string

timestamp or datetime string

Tags
phpstan-param

row_array $row

Return values
array<string|int, mixed>

setDate()

Sets the date or current date if null value is passed.

protected setDate([int|null $userData = null ]) : int|string
Parameters
$userData : int|null = null

An optional PHP timestamp to be converted.

Tags
throws
ModelException
Return values
int|string

setUpdatedField()

Set datetime to updated field.

protected setUpdatedField(array<string|int, mixed> $row, int|string $date) : array<string|int, mixed>
Parameters
$row : array<string|int, mixed>
$date : int|string

timestamp or datetime string

Tags
phpstan-param

row_array $row

Return values
array<string|int, mixed>

shouldUpdate()

This method is called on save to determine if entry have to be updated If this method return false insert operation will be executed

protected shouldUpdate(array<string|int, mixed>|object $row) : bool
Parameters
$row : array<string|int, mixed>|object

Data

Return values
bool

timeToDate()

Converts Time value to string using $this->dateFormat.

protected timeToDate(Time $value) : int|string

The available time formats are:

  • 'int' - Stores the date as an integer timestamp
  • 'datetime' - Stores the data in the SQL datetime format
  • 'date' - Stores the date (only) in the SQL date format.
Parameters
$value : Time

value

Return values
int|string

timeToString()

Convert any Time instances to appropriate $dateFormat.

protected timeToString(array<string, mixed> $properties) : array<string, mixed>
Parameters
$properties : array<string, mixed>
Return values
array<string, mixed>

transformDataToArray()

Transform data to array.

protected transformDataToArray(array<string|int, mixed>|object|null $row, string $type) : array<string|int, mixed>
Parameters
$row : array<string|int, mixed>|object|null

Row data

$type : string

Type of data (insert|update)

Tags
phpstan-param

row_array|object|null $row

throws
DataException
throws
InvalidArgumentException
throws
ReflectionException
used-by

insert()

used-by

update()

Return values
array<string|int, mixed>

trigger()

A simple event trigger for Model Events that allows additional data manipulation within the model. Specifically intended for usage by child models this can be used to format data, save/load related classes, etc.

protected trigger(string $event, array<string|int, mixed> $eventData) : array<string|int, mixed>

It is the responsibility of the callback methods to return the data itself.

Each $eventData array MUST have a 'data' key with the relevant data for callback methods (like an array of key/value pairs to insert or update, an array of results, etc.)

If callbacks are not allowed then returns $eventData immediately.

Parameters
$event : string

Event

$eventData : array<string|int, mixed>

Event Data

Tags
throws
DataException
Return values
array<string|int, mixed>

useCasts()

Are casts used?

protected useCasts() : bool
Return values
bool

checkBuilderMethod()

Checks the Builder method name that should not be used in the Model.

private checkBuilderMethod(string $name) : void
Parameters
$name : string

        
On this page

Search results