diff --git a/src/Builder/BaseBuilder.php b/src/Builder/BaseBuilder.php index 39cc6e7..90436fa 100644 --- a/src/Builder/BaseBuilder.php +++ b/src/Builder/BaseBuilder.php @@ -181,6 +181,12 @@ public function __construct(protected ConnectionInterface $db) $this->compiler = $this->createCompiler(); } + + public function __clone(): void + { + $this->bindings = clone $this->bindings; + } + /** * Methode magique pour recupere une valeur interne du Builder * diff --git a/src/Listeners/DatabaseListener.php b/src/Listeners/DatabaseListener.php index 2fd0e04..f28a11f 100644 --- a/src/Listeners/DatabaseListener.php +++ b/src/Listeners/DatabaseListener.php @@ -54,7 +54,7 @@ private function addInfoToAboutCommand() return $group; } - $output = str_ireplace('pdo', '', $config['driver']) . '/' . $config['host']; + $output = str_ireplace('pdo', '', $config['driver']) . '/' . ($config['hostname'] ?? $config['host']); if (! empty($config['port'])) { $output .= ':' . $config['port']; diff --git a/src/Model.php b/src/Model.php index 314a267..0a7b292 100644 --- a/src/Model.php +++ b/src/Model.php @@ -764,12 +764,26 @@ protected function addTimestamps(array $data, string $action): array */ protected function freshTimestamp(): int|string { - $now = Date::now(); + return $this->timeToDate(Date::now()); + } + /** + * Convertit la valeur Date en chaîne en utilisant $this->dateFormat. + * + * Les formats disponibles sont : + * - 'int' - Stocke la date sous la forme d'un horodatage entier + * - 'datetime' - Stocke les données au format datetime SQL + * - 'date' - Stocke la date (uniquement) au format de date SQL. + * + * @return int|string + */ + protected function timeToDate(Date $date): int|string + { return match ($this->dateFormat) { - 'int' => $now->getTimestamp(), - 'date' => $now->format('Y-m-d'), - default => $now->format('Y-m-d H:i:s'), + 'int' => $date->getTimestamp(), + 'date' => $date->format('Y-m-d'), + 'datetime' => $date->format('Y-m-d H:i:s'), + default => (string) $date, }; } @@ -851,7 +865,8 @@ protected function objectToArray(object $object): array $properties = []; foreach ($props as $prop) { - $properties[$prop->getName()] = $prop->getValue($object); + $value = $prop->getValue($object); + $properties[$prop->getName()] = $value instanceof Date ? $this->timeToDate($value) : $value; } }