FIX: casos en que PDO::execute retorna falso, pero sin tirar PDOException

DateTime con parametro pasado DateTime
Model::jsonComplement
This commit is contained in:
Juan Pablo Vial
2025-03-04 11:53:14 -03:00
parent e4e952e842
commit 5054d8f19b
3 changed files with 22 additions and 3 deletions

View File

@ -26,7 +26,13 @@ abstract class Model implements Define\Model
public function jsonSerialize(): mixed
{
return [
'id' => $this->id
'id' => $this->id,
...$this->jsonComplement()
];
}
protected function jsonComplement(): array
{
return [];
}
}

View File

@ -204,9 +204,11 @@ abstract class Repository implements Define\Repository
{
try {
$result = $this->connection->execute($query, $data)->fetch(PDO::FETCH_ASSOC);
if ($result === false) {
throw new EmptyResult($query);
}
} catch (PDOException $exception) {
throw new EmptyResult($query, $exception);
}
return $this->load($result);
}

View File

@ -2,6 +2,7 @@
namespace Incoviba\Common\Implement\Repository\Mapper;
use DateTimeImmutable;
use DateMalformedStringException;
use Incoviba\Common\Implement\Repository\Mapper;
class DateTime extends Mapper
@ -9,7 +10,17 @@ class DateTime extends Mapper
public function __construct(string $column, ?string $property = null)
{
$this->setFunction(function($data) use ($column) {
if (!isset($data[$column])) {
return null;
}
if (is_a($data[$column], DateTimeImmutable::class)) {
return $data[$column];
}
try {
return new DateTimeImmutable($data[$column] ?? '');
} catch (DateMalformedStringException) {
return new DateTimeImmutable();
}
});
if ($property !== null) {
$this->setProperty($property);