class ModelCollection implements ArrayAccess, IteratorAggregate, Countable mixin ScopesTrait

Constants

SORT_ALPHABETICAL

SORT_NUMERICAL

EVENT_AFTER_LOAD

Properties

protected Model $model

reference to model-type

protected bool|Model[] $models

Array of models in this collection

protected bool $loaded

Boolean which indicates whether collection is loaded or not (not equal empty!)

Methods

mixed
__call(mixed $method, mixed $args = array())

Handle find functions

__construct(Model $model, array|ModelCollection|bool $model_array = null, $useModelClone = true)

Create new Model Array

__toString()

No description

_search_by(string $query, array|bool $parameters = false, bool $return_single = true)

returns model found by property => value

add_formatted_property(string $property, string $format, array $options = array())

Apply lib->format multi_format on passed property. The result will be written to ->[property]_formatted

all(mixed $args = array())

Find Function to find models using the passed condition

append(mixed $value)

Adds an Object to the models-array.

attach(string $property, array $values, string $key_field = null)

Set property values to models from array

batchProcess(int $batchSize, callable $callback)

Runs the passed function batched for the passed amount of models to reduce memory issues while creating too many model objects at once This function should be called on an unloaded Collection to be most effective

int
count()

Returns the number of containing models Attention: This will load all models of the collection Use $model_collection->count_all() for this case to determine count without loading all models Note: this function is called if the php function count(this_collection) is used

int
count_all()

No description

array
debug()

Use for debugging

void
filter(mixed $callback = false)

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

getDocumentIndexes()

Prefetch and returns document index objects for all items of this collection.

getIterator()

foreach($collection) .

array|bool
get_db_properties()

No description

get_model()

Returns the Default-Model (-Type) for this Collection

string
get_model_class()

put your comment there.

array|Model[]
get_models()

Returns array with objects

array
invoke(string $method)

Calls the passed method for each object

bool
is_loaded()

Returns true if this collection has been filled

Model|bool
last()

Return the last element of the collection

void
merge()

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

bool
offsetExists(mixed $offset)

isset($collection[0])

offsetGet(mixed $offset)

$collection[0]

offsetSet(mixed $offset, mixed $value)

$collections[0] = $entry

offsetUnset(mixed $offset)

unset($collection[0])

pluck(string|string[] $property, string $key_field = null)

Returns the passed property of all objects in an array

array
pluck_unique(mixed $property, mixed $key_field = false)

Returns the passed property of all objects in an array (unique and filtered)

Model|null
pop()

this function returns the last value of the models-array, shortening the models-array by one element.

int
push(Model $model1, Model $model2 = null)

this function treats models-array as a stack, and pushes the passed variables onto the end of array.

bool
require_loading()

If the collection is not loaded yes the collection will use all() to be filled

reset()

Resets the loaded collection by clearing all loaded models and marking the collection as not being loaded.

reverse(bool $preserve_keys = false)

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

save(bool $silent = false)

No description

scope_by_COL(mixed $value)

No description

Model[]
search_all_by_id(mixed $id, mixed $query_params)

No description

search_by_id(mixed $id, mixed $query_params)

No description

setProperty(string $key, mixed $value)

No description

Model|null
shift()

This function shifts the first value of the models-array off and returns it, shortening the array by one element and moving everything down.

slice(int $offset, int|bool $length = false, bool $preserve_keys = false)

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

sort_by(string $property, string $order_by = 'asc', int $type = ModelCollection::SORT_ALPHABETICAL)

Sorts the current Collection by given Property-Name

mixed
sum(string $property, string|bool $group_field = false)

Returns the sum of the passed property across all models

array|Model[]
to_array(bool $raw = false)

Returns collection as array of models

string
to_json()

Returns collection as json of models

string
to_string()

Returns collection as string

string
to_xml(array|bool $property_filter = false)

Returns an XML of all model properties

int
unshift()

This function prepends passed elements to the front of the array.

bool
usort(mixed $cmp_function)

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

Details

at line 171
mixed __call(mixed $method, mixed $args = array())

Handle find functions

Parameters

mixed $method
mixed $args

Return Value

mixed

at line 82
__construct(Model $model, array|ModelCollection|bool $model_array = null, $useModelClone = true)

Create new Model Array

Parameters

Model $model

Reference to Model

array|ModelCollection|bool $model_array

Optional array of Models to initialize collection with

$useModelClone

at line 808
__toString()

No description

at line 518
protected Model|ModelCollection|bool _search_by(string $query, array|bool $parameters = false, bool $return_single = true)

returns model found by property => value

Parameters

string $query

function_name_query (e.g.: title_and_user_id)

array|bool $parameters
bool $return_single

determines the result-type [FALSE] : Model or boolean false on fail [TRUE] : ModelCollection

Return Value

Model|ModelCollection|bool

see also param-doc of "$return_single"

at line 795
add_formatted_property(string $property, string $format, array $options = array())

Apply lib->format multi_format on passed property. The result will be written to ->[property]_formatted

Parameters

string $property

Property of models to format

string $format

Format Type (e.g. money, date, ...)

array $options

Additional format options

at line 247
ModelCollection all(mixed $args = array())

Find Function to find models using the passed condition

Parameters

mixed $args

Further query parameters (e.g. LIMIT) $params['limit'] --> Limit condition, e.g. limit=>'1,10' $params['order_by'] --> Order condition, e.g. order_by='id ASC'

Return Value

ModelCollection

result

at line 890
append(mixed $value)

Adds an Object to the models-array.

It will be appended after the last position of array

Parameters

mixed $value

at line 483
attach(string $property, array $values, string $key_field = null)

Set property values to models from array

Parameters

string $property

e.g. calculated_property

array $values

['id1'=>'CALCULATED for id1']

string $key_field

Will default to table_primary_key

at line 357
batchProcess(int $batchSize, callable $callback)

Runs the passed function batched for the passed amount of models to reduce memory issues while creating too many model objects at once This function should be called on an unloaded Collection to be most effective

Parameters

int $batchSize

Number of models which should be processed per chunk

callable $callback

Callback which will be called for each chunk. The function receives a ModelCollection as the first argument which contains a subset of models for this chunk run.

at line 869
int count()

Returns the number of containing models Attention: This will load all models of the collection Use $model_collection->count_all() for this case to determine count without loading all models Note: this function is called if the php function count(this_collection) is used

Return Value

int

count of models

at line 22
int count_all()

No description

Return Value

int

at line 1207
array debug()

Use for debugging

Return Value

array

at line 1041
void filter(mixed $callback = false)

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

Iterates over each value in the models-array passing them to the callback function. If the callback function returns true, the current value from input is returned into the result array. Array keys are preserved.

Parameters

mixed $callback

If the callback function is not supplied, array_filter() will remove all the entries of input that are equal to FALSE, null or ''

Return Value

void

at line 150
ModelCollection getDocumentIndexes()

Prefetch and returns document index objects for all items of this collection.

Return Value

ModelCollection

at line 1278
getIterator()

foreach($collection) .

..

at line 1195
array|bool get_db_properties()

No description

Return Value

array|bool

at line 1188
Model get_model()

Returns the Default-Model (-Type) for this Collection

Return Value

Model

at line 113
string get_model_class()

put your comment there.

..

Return Value

string

???

at line 121
array|Model[] get_models()

Returns array with objects

Return Value

array|Model[]

at line 336
array invoke(string $method)

internal  param mixed $args Additional Parameters
 

Calls the passed method for each object

Parameters

string $method

Method Name

Return Value

array

[like pluck]

at line 129
bool is_loaded()

Returns true if this collection has been filled

Return Value

bool

True if loaded

at line 1093
Model|bool last()

Return the last element of the collection

Return Value

Model|bool

at line 942
void merge()

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

Merges the elements of one or more arrays together so that the values of one are appended to the end of the previous one. It returns the resulting array. If the input arrays have the same string keys, then the later value for that key will overwrite the previous one. If, however, the arrays contain numeric keys, the later value will not overwrite the original value, but will be appended. If only one array is given and the array is numerically indexed, the keys get reindexed in a continuous way.

Return Value

void

at line 1243
bool offsetExists(mixed $offset)

isset($collection[0])

Parameters

mixed $offset

Return Value

bool

at line 1267
Model offsetGet(mixed $offset)

$collection[0]

Parameters

mixed $offset

Return Value

Model

at line 1230
offsetSet(mixed $offset, mixed $value)

$collections[0] = $entry

Parameters

mixed $offset
mixed $value

at line 1254
offsetUnset(mixed $offset)

unset($collection[0])

Parameters

mixed $offset

at line 416
pluck(string|string[] $property, string $key_field = null)

Returns the passed property of all objects in an array

Parameters

string|string[] $property

[array ior], pass * to retrieve all properties, pass 'this' to retrieve models

string $key_field

at line 465
array pluck_unique(mixed $property, mixed $key_field = false)

Returns the passed property of all objects in an array (unique and filtered)

Parameters

mixed $property
mixed $key_field

Return Value

array

at line 903
Model|null pop()

this function returns the last value of the models-array, shortening the models-array by one element.

Will additionally produce a Warning when called on a non-array.

Return Value

Model|null

Model or NULL if models-array is empty or not an array

at line 917
int push(Model $model1, Model $model2 = null)

this function treats models-array as a stack, and pushes the passed variables onto the end of array.

The length of array increases by the number of variables pushed.

Parameters

Model $model1

the pushed value

Model $model2

another value to push [optional]

Return Value

int

Count of Models after pushing-operation

at line 137
bool require_loading()

If the collection is not loaded yes the collection will use all() to be filled

Return Value

bool

requires loading

at line 1059
reset()

Resets the loaded collection by clearing all loaded models and marking the collection as not being loaded.

Will not reset scope.

at line 1003
reverse(bool $preserve_keys = false)

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

The models-array will be modified with the order of the elements reversed.

Parameters

bool $preserve_keys

at line 302
ModelCollection save(bool $silent = false)

No description

Parameters

bool $silent

Return Value

ModelCollection

at line 22
ModelCollection scope_by_COL(mixed $value)

No description

Parameters

mixed $value

Return Value

ModelCollection

at line 22
Model[] search_all_by_id(mixed $id, mixed $query_params)

No description

Parameters

mixed $id
mixed $query_params

Return Value

Model[]

at line 22
Model search_by_id(mixed $id, mixed $query_params)

No description

Parameters

mixed $id
mixed $query_params

Return Value

Model

at line 284
ModelCollection setProperty(string $key, mixed $value)

No description

Parameters

string $key
mixed $value

Return Value

ModelCollection

at line 969
Model|null shift()

This function shifts the first value of the models-array off and returns it, shortening the array by one element and moving everything down.

All numerical array keys will be modified to start counting from zero while literal keys won't be touched.

Return Value

Model|null

Returns the shifted value, or NULL if models-array is empty or is not an array.

at line 1084
slice(int $offset, int|bool $length = false, bool $preserve_keys = false)

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

Parameters

int $offset

If offset is non-negative, the sequence will start at that offset in the array . If offset is negative, the sequence will start that far from the end of the array .

int|bool $length

If length is given and is positive, then the sequence will have that many elements in it. If length is given and is negative then the sequence will stop that many elements from the end of the array. If it is omitted, then the sequence will have everything from offset up until the end of the array .

bool $preserve_keys

Note that array_slice() will reorder and reset the array indices by default. You can change this behaviour by setting preserve_keys to TRUE.

at line 1120
ModelCollection sort_by(string $property, string $order_by = 'asc', int $type = ModelCollection::SORT_ALPHABETICAL)

Sorts the current Collection by given Property-Name

Unit-Test!!! implement more order types - mixed str_word_count ( string $string [, int $format = 0 [, string $charlist ]] ) - word_length - ...

Parameters

string $property

Field-Name of the Model-Property (e.g.: 'id', 'created_at', ...)

string $order_by

sort-direction ['asc' | 'desc']

int $type

which type should be sorted [ModelCollection::SORT_ALPHABETICAL (default) | ModelCollection::SORT_NUMERICAL ]

Return Value

ModelCollection

at line 393
mixed sum(string $property, string|bool $group_field = false)

Returns the sum of the passed property across all models

Parameters

string $property

Property Field to sum up (e.g. price)

string|bool $group_field

Optional Group Field to group sums

Return Value

mixed

Returns array or value

at line 819
array|Model[] to_array(bool $raw = false)

Returns collection as array of models

Parameters

bool $raw

If true calls get_properties on each model

Return Value

array|Model[]

at line 836
string to_json()

Returns collection as json of models

Return Value

string

at line 804
string to_string()

Returns collection as string

Return Value

string

at line 846
string to_xml(array|bool $property_filter = false)

Returns an XML of all model properties

Parameters

array|bool $property_filter

property_filter array if given, only the properties in this array are added

Return Value

string

at line 982
int unshift()

This function prepends passed elements to the front of the array.

Note that the list of elements is prepended as a whole, so that the prepended elements stay in the same order. All numerical array keys will be modified to start counting from zero while literal keys won't be touched.

Return Value

int

Returns the new number of elements in the array.

at line 319
ModelCollection updateDocumentIndexes()

No description

Return Value

ModelCollection

at line 1025
bool usort(mixed $cmp_function)

DESTRUCTIVE This will manipulate the models-list and doesn't return anything!

This function will sort the models-array by its values using a user-supplied comparison function. If the array you wish to sort needs to be sorted by some non-trivial criteria, you should use this function.

Parameters

mixed $cmp_function

The comparison function must return an integer less than, equal to, or greater than zero if the first argument is considered to be respectively less than, equal to, or greater than the second.

Return Value

bool

was sorting successful?

Examples

$collection->usort("compare_objects");
$collection->usort(array(&$article, "compare_articles"));