diff --git a/src/Actions/BuildModelDetails.php b/src/Actions/BuildModelDetails.php index 9ad1589..615ca4f 100644 --- a/src/Actions/BuildModelDetails.php +++ b/src/Actions/BuildModelDetails.php @@ -51,6 +51,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, ]); diff --git a/src/Actions/WriteColumnAttribute.php b/src/Actions/WriteColumnAttribute.php index 8e49891..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} */ @@ -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}?"; }