From 0603bf9678a581a190d403f3850feaa3cd9dd682 Mon Sep 17 00:00:00 2001 From: Chris Holowatyj Date: Wed, 3 Jun 2026 21:12:49 -0400 Subject: [PATCH 1/3] Add optional field to interface mapping --- src/Actions/BuildModelDetails.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Actions/BuildModelDetails.php b/src/Actions/BuildModelDetails.php index da6997f..44a6daa 100644 --- a/src/Actions/BuildModelDetails.php +++ b/src/Actions/BuildModelDetails.php @@ -50,6 +50,7 @@ public function __invoke(SplFileInfo $modelFile, ?array $includedModels = null, 'name' => $key, 'type' => $interface['type'] ?? 'unknown', 'nullable' => $interface['nullable'] ?? false, + 'optional' => $interface['optional'] ?? false, 'import' => $interface['import'] ?? null, 'forceType' => true, ]); From 08e2035b48a1958d35b4d4fc239deea0c994800c Mon Sep 17 00:00:00 2001 From: Chris Holowatyj Date: Wed, 3 Jun 2026 21:15:40 -0400 Subject: [PATCH 2/3] Add optional check for 'optional' attribute --- src/Actions/WriteColumnAttribute.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Actions/WriteColumnAttribute.php b/src/Actions/WriteColumnAttribute.php index 8e49891..73e3eff 100644 --- a/src/Actions/WriteColumnAttribute.php +++ b/src/Actions/WriteColumnAttribute.php @@ -160,7 +160,7 @@ public function __invoke(ReflectionClass $reflectionModel, array $attribute, arr $type .= ' | null'; } - if ((isset($attribute['hidden']) && $attribute['hidden']) || ($optionalNullables && $attribute['nullable'])) { + if ((isset($attribute['hidden']) && $attribute['hidden']) || ($optionalNullables && $attribute['nullable']) || (isset($attribute['optional']) && $attribute['optional'])) { $name = "{$name}?"; } From 8c389fa1a109f834bd9df2f823c6ed34308351e0 Mon Sep 17 00:00:00 2001 From: tanner Date: Thu, 11 Jun 2026 23:15:12 -0400 Subject: [PATCH 3/3] Add 'optional' attribute to parameter type definition in WriteColumnAttribute --- src/Actions/WriteColumnAttribute.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Actions/WriteColumnAttribute.php b/src/Actions/WriteColumnAttribute.php index 73e3eff..639c62e 100644 --- a/src/Actions/WriteColumnAttribute.php +++ b/src/Actions/WriteColumnAttribute.php @@ -21,7 +21,7 @@ class WriteColumnAttribute * Get model columns and attributes to the output. * * @param ReflectionClass $reflectionModel - * @param array{name: string, type?: string|null, increments: bool, nullable: bool, default: mixed, unique: bool, fillable: bool, hidden?: bool, appended: mixed, cast?: string|null, forceType?: bool} $attribute + * @param array{name: string, type?: string|null, increments: bool, nullable: bool, default: mixed, unique: bool, fillable: bool, hidden?: bool, appended: mixed, cast?: string|null, forceType?: bool, optional?: bool} $attribute * @param array $mappings * @return array{array{name: string, type: string}, ReflectionClass|null}|array{string, ReflectionClass|null}|array{null, null} */