Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danschmidt5189/yii-utility
Helpful utility classes for the Yii PHP Framework.
https://github.com/danschmidt5189/yii-utility
Last synced: about 1 month ago
JSON representation
Helpful utility classes for the Yii PHP Framework.
- Host: GitHub
- URL: https://github.com/danschmidt5189/yii-utility
- Owner: danschmidt5189
- Created: 2013-11-30T00:26:10.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2013-12-01T20:17:42.000Z (about 11 years ago)
- Last Synced: 2024-10-14T11:55:09.183Z (3 months ago)
- Language: PHP
- Size: 246 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
# Yii PHP Framework Utility Classes
## ActiveRecordSet
ActiveRecordSet is a helper class for dealing with collections of ActiveRecord objects.
`__get()`, `__set()`, and `__call()` are overridden to allow access to methods of the
AR models contained in the set. Results of method calls obtained by accessing the records
within the set are returned in a `MultiResult` object.### Construction
```php
// Get some customers from the DB
// Note that the index is important! If you don't specify an index, you
// may get unexpected results.
$customers = Customer::model()->findAll(['limit' =>10, 'index' =>'id']);// Explicitly set the class name and load data
$set = new ActiveRecordSet('Customer', $customers);// Implicitly set the class name and load data
$set = new ActiveRecordSet($customers);// Explicitly set the class name, but load data later
$set = new ActiveRecordSet('Customer');
$set->add($customers);
foreach ($customers as $id =>$record) {
$set->add($id, $record);
}
```### Loading Data
You can load data into each record in the set using `load()`, or into records specified by a
given key using `loadByKey()`. The methods `setAttributes()` and `setAttributesByKey()` are
aliases of these methods.Both methods return a MultiResult indicating whether any record was modified.
```php
// Here's some data...
$data = [
'firstname' =>'John',
'lastname' =>'Doe',
];// Equivalent to calling setAttributes($data) on each Customer in the set
// This is safe-only
$set->attributes = $data;// You can also be unsafe...
$set->setAttributes($data, false);// ... or unsafe and set specific attributes...
$set->balance = 0;// ... or specify which records to set data on
$set->loadByKey([
1 =>['firstname' =>'Dave', 'lastname' =>'Graham'],
2 =>['firstname' =>'Nalle', 'lastname' =>'Hukkataival'],
]);
```## MultiResult
A multi-result is a set used to express the result of bulk-operations on the underlying
records in an ActiveRecordSet. For example, calling `$set->validate()` returns a MultiResult.The keys of the MultiResult are the record keys, and the values are the results returned
by the corresponding record. Fetching properties, calling methods, or setting properties
all return a multiresult if performed on the entire record set.Use `allTrue`, `partlyTrue`, `allFalse`, `partlyFalse`, and `toArray()` to interpret your MultiResult:
```php
if ($set->validate()->allTrue) {
// All Valid:
// Note that $set->validate() returned a MultiResult object, which we determined
// was completely valid by calling allTrue().
} else if ($set->hasErrors()->partlyTrue) {
// hasErrors() is a MultiResult, and partlyTrue indicates at least one record
// had an error. $set->getErrors() also returns a MultiResult, which can be
// converted into an array.
echo CJSON::encode([
'message' =>'Validation errors',
'errors' =>$set->errors->toArray(),
]);
} else {
echo CJSON::encode([
'message' =>'Internal error',
]);
}
```