Improve Base collection, model and repository

- Add collection pipeline methods
- Add save collection method
This commit is contained in:
Hypolite Petovan 2020-01-13 22:18:45 -05:00
parent 559879f41f
commit 5ab898f67f
3 changed files with 90 additions and 3 deletions

View file

@ -69,6 +69,18 @@ abstract class BaseModel
return $model;
}
/**
* Magic isset method. Returns true if the field exists, either in the data prperty array or in any of the local properties.
* Used by array_column() on an array of objects.
*
* @param $name
* @return bool
*/
public function __isset($name)
{
return in_array($name, array_merge(array_keys($this->data), array_keys(get_object_vars($this))));
}
/**
* Magic getter. This allows to retrieve model fields with the following syntax:
* - $model->field (outside of class)
@ -80,9 +92,7 @@ abstract class BaseModel
*/
public function __get($name)
{
if (empty($this->data['id'])) {
throw new HTTPException\InternalServerErrorException(static::class . ' record uninitialized');
}
$this->checkValid();
if (!array_key_exists($name, $this->data)) {
throw new HTTPException\InternalServerErrorException('Field ' . $name . ' not found in ' . static::class);
@ -104,4 +114,11 @@ abstract class BaseModel
{
return $this->data;
}
protected function checkValid()
{
if (empty($this->data['id'])) {
throw new HTTPException\InternalServerErrorException(static::class . ' record uninitialized');
}
}
}