/** * @inheritdoc */ public function fill($attributes) { parent::fill($attributes); if ($this->isSensitive() && array_has($attributes, 'value')) { $this->value = Crypt::encrypt($this->value); } return $this; }
/** * Model getters test * * @return void */ public function testModelGet() { $project_data = $this->stack_model->get('environment.project.'); $project_model = $this->stack_model->get('environment.project'); $stack_data = $this->stack_model->get(); $stack_name = $this->stack_model->name; $this->assertEquals(['name' => 'highcore'], $project_data); $this->assertInstanceOf('\\Highcore\\Models\\Project', $project_model); $this->assertEquals(array_keys($this->stack_model->toArray()), array_keys($stack_data)); $this->assertEquals($this->stack_model->get('name'), $stack_name); }
/** * @param string $class_slug Model class name * @param mixed|array $parameters Array of parameters to use in where clause * @param array $relations Array of relations with parameters as keys. * Each relation provides key and relation path for QueryBuilder * @param string $key Field to be used as a key * @return Collection */ protected function getModels($class_slug, $parameters = [], $relations, $key) { if (!is_array($parameters)) { $parameters = ['key' => $parameters]; } $relations_parameters = array_intersect_key($relations, $parameters); $model_parameters = array_except($parameters, array_keys($relations_parameters)); $orm_class = self::getQueryClass($class_slug); /** @var Builder $query */ $query = $orm_class::query(); foreach ($model_parameters as $parameter => $value) { if ($parameter == 'key') { $parameter = $key; } self::where($query, $parameter, $value); } $query->with(array_map(function ($r) { return $r['relation']; }, array_values($relations))); foreach ($relations_parameters as $parameter => $relation_data) { $value = $parameters[$parameter]; $query->with([$relation_data['relation'] => function ($query) use($key, $value) { self::where($query, $key, $value); }]); $query->whereHas($relation_data['relation'], function ($query) use($key, $value) { self::where($query, $key, $value); }); } $orm_models = $query->get(); $models = Collection::make(); $class = Model::getModelClass($class_slug); foreach ($orm_models as $orm_model) { $models->push($class::make($orm_model)); } return $models; }