decodeItems($value); } public function setBeforeItemsAttr($value) { return $this->encodeItems($value); } public function getAfterItemsAttr($value) { return $this->decodeItems($value); } public function setAfterItemsAttr($value) { return $this->encodeItems($value); } protected function decodeItems($value) { if ($value === null || $value === '') { return []; } $decoded = json_decode($value, true); return is_array($decoded) ? $decoded : []; } protected function encodeItems($value) { if (is_array($value)) { return json_encode($value, JSON_UNESCAPED_UNICODE); } return $value; } }