lithium\data\entity\Document::set()
Overrides
lithium\data\Entity::set()
Allows several properties to be assigned at once.
For example:
$doc->set(['title' => 'Lorem Ipsum', 'value' => 42]);
Parameters
-
array
$data
An associative array of fields and values to assign to the
Document
. -
array
$options
Returns
voidSource
public function set(array $data, array $options = []) {
$defaults = ['init' => false];
$options += $defaults;
$cast = ($schema = $this->schema());
foreach ($data as $key => $val) {
unset($this->_increment[$key]);
if (strpos($key, '.')) {
$this->_setNested($key, $val);
continue;
}
if ($cast) {
$pathKey = $this->_pathKey;
$model = $this->_model;
$parent = $this;
$val = $schema->cast($this, $key, $val, compact('pathKey', 'model', 'parent'));
}
if ($val instanceof self) {
$val->_exists = $options['init'] && $this->_exists;
$val->_pathKey = ($this->_pathKey ? "{$this->_pathKey}." : '') . $key;
$val->_model = $val->_model ?: $this->_model;
$val->_schema = $val->_schema ?: $this->_schema;
}
$this->_updated[$key] = $val;
}
}