Skip to content

Commit 443e451

Browse files
committed
DateTime filter (#189): Convert \DateTimeImmutable to Database value
1 parent a437f48 commit 443e451

File tree

3 files changed

+23
-2
lines changed

3 files changed

+23
-2
lines changed

src/Utils/BeanDescriptor.php

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Doctrine\DBAL\Schema\Schema;
99
use Doctrine\DBAL\Schema\Table;
1010
use Doctrine\DBAL\Schema\ForeignKeyConstraint;
11+
use Doctrine\DBAL\Types\Type;
1112
use JsonSerializable;
1213
use Mouf\Database\SchemaAnalyzer\SchemaAnalyzer;
1314
use PhpParser\Comment\Doc;
@@ -1291,7 +1292,17 @@ private function generateFindByDaoCodeForIndex(Index $index, string $beanNamespa
12911292
foreach ($elements as $element) {
12921293
$params[] = $element->getParamAnnotation();
12931294
if ($element instanceof ScalarBeanPropertyDescriptor) {
1294-
$filterArrayCode .= ' '.var_export($element->getColumnName(), true).' => '.$element->getSafeVariableName().",\n";
1295+
$typeName = $element->getDatabaseType()->getName();
1296+
if ($typeName === Type::DATETIME_IMMUTABLE) {
1297+
$filterArrayCode .= sprintf(
1298+
" %s => \$this->tdbmService->getConnection()->convertToDatabaseValue(%s, %s),\n",
1299+
var_export($element->getColumnName(), true),
1300+
$element->getSafeVariableName(),
1301+
var_export($typeName, true)
1302+
);
1303+
} else {
1304+
$filterArrayCode .= ' '.var_export($element->getColumnName(), true).' => '.$element->getSafeVariableName().",\n";
1305+
}
12951306
} elseif ($element instanceof ObjectBeanPropertyDescriptor) {
12961307
$foreignKey = $element->getForeignKey();
12971308
$columns = SafeFunctions::arrayCombine($foreignKey->getLocalColumns(), $foreignKey->getForeignColumns());

src/Utils/ScalarBeanPropertyDescriptor.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,16 @@ public function getPhpType(): string
7373
return TDBMDaoGenerator::dbalTypeToPhpType($type);
7474
}
7575

76+
/**
77+
* Returns the Database type for the property
78+
*
79+
* @return Type
80+
*/
81+
public function getDatabaseType(): Type
82+
{
83+
return $this->column->getType();
84+
}
85+
7686
/**
7787
* Returns true if the property is compulsory (and therefore should be fetched in the constructor).
7888
*

tests/TDBMDaoGeneratorTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2175,7 +2175,7 @@ public function testMethodNameConflictsBetweenRegularAndAutoPivotProperties(): v
21752175
public function testFindByDateTime(): void
21762176
{
21772177
$personDao = new PersonDao($this->tdbmService);
2178-
$personDao->findByModifiedAt(new \DateTimeImmutable('+1 year'))->count();
2178+
$personDao->findByModifiedAt(new \DateTimeImmutable())->count();
21792179
$this->assertTrue(true);
21802180
}
21812181
}

0 commit comments

Comments
 (0)