|
|
|
@ -103,7 +103,7 @@ class ActiveRecord extends Model
|
|
|
|
|
/** |
|
|
|
|
* @var array related models indexed by the relation names |
|
|
|
|
*/ |
|
|
|
|
private $_related; |
|
|
|
|
private $_related = []; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
@ -376,11 +376,11 @@ class ActiveRecord extends Model
|
|
|
|
|
{ |
|
|
|
|
if (isset($this->_attributes[$name]) || array_key_exists($name, $this->_attributes)) { |
|
|
|
|
return $this->_attributes[$name]; |
|
|
|
|
} elseif (isset($this->getTableSchema()->columns[$name])) { |
|
|
|
|
} elseif ($this->hasAttribute($name)) { |
|
|
|
|
return null; |
|
|
|
|
} else { |
|
|
|
|
$t = strtolower($name); |
|
|
|
|
if (isset($this->_related[$t]) || $this->_related !== null && array_key_exists($t, $this->_related)) { |
|
|
|
|
if (isset($this->_related[$t]) || array_key_exists($t, $this->_related)) { |
|
|
|
|
return $this->_related[$t]; |
|
|
|
|
} |
|
|
|
|
$value = parent::__get($name); |
|
|
|
@ -430,7 +430,7 @@ class ActiveRecord extends Model
|
|
|
|
|
*/ |
|
|
|
|
public function __unset($name) |
|
|
|
|
{ |
|
|
|
|
if (isset($this->getTableSchema()->columns[$name])) { |
|
|
|
|
if ($this->hasAttribute($name)) { |
|
|
|
|
unset($this->_attributes[$name]); |
|
|
|
|
} else { |
|
|
|
|
$t = strtolower($name); |
|
|
|
@ -542,6 +542,16 @@ class ActiveRecord extends Model
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns a value indicating whether the model has an attribute with the specified name. |
|
|
|
|
* @param string $name the name of the attribute |
|
|
|
|
* @return boolean whether the model has an attribute with the specified name. |
|
|
|
|
*/ |
|
|
|
|
public function hasAttribute($name) |
|
|
|
|
{ |
|
|
|
|
return isset($this->_attributes[$name]) || isset($this->getTableSchema()->columns[$name]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns the named attribute value. |
|
|
|
|
* If this record is the result of a query and the attribute is not loaded, |
|
|
|
|
* null will be returned. |
|
|
|
@ -571,16 +581,6 @@ class ActiveRecord extends Model
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns a value indicating whether the model has an attribute with the specified name. |
|
|
|
|
* @param string $name the name of the attribute |
|
|
|
|
* @return boolean whether the model has an attribute with the specified name. |
|
|
|
|
*/ |
|
|
|
|
public function hasAttribute($name) |
|
|
|
|
{ |
|
|
|
|
return isset($this->_attributes[$name]) || isset($this->getTableSchema()->columns[$name]); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Returns the old attribute values. |
|
|
|
|
* @return array the old attribute values (name-value pairs) |
|
|
|
|
*/ |
|
|
|
@ -622,7 +622,7 @@ class ActiveRecord extends Model
|
|
|
|
|
*/ |
|
|
|
|
public function setOldAttribute($name, $value) |
|
|
|
|
{ |
|
|
|
|
if (isset($this->_oldAttributes[$name]) || isset($this->getTableSchema()->columns[$name])) { |
|
|
|
|
if (isset($this->_oldAttributes[$name]) || $this->hasAttribute($name)) { |
|
|
|
|
$this->_oldAttributes[$name] = $value; |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidParamException(get_class($this) . ' has no attribute named "' . $name . '".'); |
|
|
|
@ -1138,7 +1138,7 @@ class ActiveRecord extends Model
|
|
|
|
|
$this->_attributes[$name] = $record->_attributes[$name]; |
|
|
|
|
} |
|
|
|
|
$this->_oldAttributes = $this->_attributes; |
|
|
|
|
$this->_related = null; |
|
|
|
|
$this->_related = []; |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|