diff --git a/src/Casts/HtmlDateTimeCast.php b/src/Casts/HtmlDateTimeCast.php index 44695e3..7e219aa 100644 --- a/src/Casts/HtmlDateTimeCast.php +++ b/src/Casts/HtmlDateTimeCast.php @@ -8,8 +8,8 @@ use Illuminate\Database\Eloquent\Model; /** * Cast for datetime fields that: - * - Accepts string, DateTimeInterface, or Carbon as input - * - Stores as Unix timestamp in database (integer) + * - Accepts string, DateTimeInterface, Carbon, or Unix timestamp as input + * - Stores as datetime string in database (for timestamp columns) * - Returns Carbon instance on get * * Usage for HTML5 datetime-local inputs: @@ -28,8 +28,8 @@ class HtmlDateTimeCast implements CastsAttributes return null; } - // Convert timestamp to Carbon - return Carbon::createFromTimestamp($value); + // Handle datetime strings from database + return Carbon::parse($value); } /** @@ -37,7 +37,7 @@ class HtmlDateTimeCast implements CastsAttributes * * @param array $attributes */ - public function set(Model $model, string $key, mixed $value, array $attributes): ?int + public function set(Model $model, string $key, mixed $value, array $attributes): ?string { if ($value === null) { return null; @@ -45,22 +45,22 @@ class HtmlDateTimeCast implements CastsAttributes // Handle Carbon instances if ($value instanceof Carbon) { - return $value->timestamp; + return $value->format('Y-m-d H:i:s'); } // Handle DateTimeInterface if ($value instanceof \DateTimeInterface) { - return Carbon::instance($value)->timestamp; + return Carbon::instance($value)->format('Y-m-d H:i:s'); } // Handle string input (including HTML5 datetime-local format) if (is_string($value)) { - return Carbon::parse($value)->timestamp; + return Carbon::parse($value)->format('Y-m-d H:i:s'); } - // Handle numeric timestamp + // Handle numeric timestamp (Unix timestamp) if (is_numeric($value)) { - return (int) $value; + return Carbon::createFromTimestamp($value)->format('Y-m-d H:i:s'); } throw new \InvalidArgumentException(