findWhere(['key' => $key], ['type', 'value'])->first(); if(!$setting) { return null; } # cast some types switch($setting->type) { case 'bool': case 'boolean': return (bool) $setting->value; break; case 'date': return Carbon::parse($setting->value); break; case 'int': case 'integer': return (int) $setting->value; break; default: return $setting->value; } } public function store($key, $value) { $setting = $this->findWhere(['key' => $key], ['id'])->first(); if (!$setting) { return null; } $this->update(['value' => $value], $setting->id); } }