Added to_array() and $hidden variable to the Eloquent base model.
Signed-off-by: Taylor Otwell <taylorotwell@gmail.com>
This commit is contained in:
parent
023dacf5e0
commit
17cabd47e6
|
@ -55,6 +55,13 @@ abstract class Model {
|
||||||
*/
|
*/
|
||||||
public static $accessible;
|
public static $accessible;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The attributes that should be excluded from to_array.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $hidden = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Indicates if the model has update and creation timestamps.
|
* Indicates if the model has update and creation timestamps.
|
||||||
*
|
*
|
||||||
|
@ -520,6 +527,51 @@ final public function purge($key)
|
||||||
unset($this->attributes[$key]);
|
unset($this->attributes[$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the model attributes and relationships in array form.
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function to_array()
|
||||||
|
{
|
||||||
|
$attributes = array();
|
||||||
|
|
||||||
|
// First we need to gather all of the regular attributes. If the attribute
|
||||||
|
// exists in the array of "hidden" attributes, it will not be added to
|
||||||
|
// the array so we can easily exclude things like passwords, etc.
|
||||||
|
foreach (array_keys($this->attributes) as $attribute)
|
||||||
|
{
|
||||||
|
if ( ! in_array($attribute, static::$hidden))
|
||||||
|
{
|
||||||
|
$attributes[$attribute] = $this->$attribute;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($this->relationships as $name => $models)
|
||||||
|
{
|
||||||
|
// If the relationship is not a "to-many" relationship, we can just
|
||||||
|
// to_array the related model and add it as an attribute to the
|
||||||
|
// array of existing regular attributes we gathered.
|
||||||
|
if ( ! is_array($models))
|
||||||
|
{
|
||||||
|
$attributes[$name] = $models->to_array();
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the relationship is a "to-many" relationship we need to spin
|
||||||
|
// through each of the related models and add each one with the
|
||||||
|
// to_array method, keying them both by name and ID.
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach ($models as $id => $model)
|
||||||
|
{
|
||||||
|
$attributes[$name][$id] = $model->to_array();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $attributes;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle the dynamic retrieval of attributes and associations.
|
* Handle the dynamic retrieval of attributes and associations.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue