dataObject = $this->dataObject ?? json_decode($this->{$this->dataColumn()}); return $this->dataObject->$key; } public function get(string $key) { return $this->$key ?? $this->getFromData($key) ?? null; } public function getMany(array $keys): array { return array_reduce($keys, function ($keys, $key) { $keys[$key] = $this->get($key); return $keys; }, []); } public function put(string $key, $value) { if (array_key_exists($key, $this->customColumns())) { $this->update([$key => $value]); } else { $obj = json_decode($this->{$this->dataColumn()}); $obj->$key = $value; $this->update([$this->getDataColumn() => json_encode($obj)]); } return $value; } }