diff --git a/packages/database/src/DatabaseInitializer.php b/packages/database/src/DatabaseInitializer.php index f848ef787..c7a7fd187 100644 --- a/packages/database/src/DatabaseInitializer.php +++ b/packages/database/src/DatabaseInitializer.php @@ -43,7 +43,7 @@ className: Connection::class, return new GenericDatabase( connection: $connection, transactionManager: new GenericTransactionManager($connection), - serializerFactory: new SerializerFactory($container), + serializerFactory: $container->get(SerializerFactory::class), ); } } diff --git a/packages/database/src/GenericDatabase.php b/packages/database/src/GenericDatabase.php index 9da986580..d6d9e5c86 100644 --- a/packages/database/src/GenericDatabase.php +++ b/packages/database/src/GenericDatabase.php @@ -142,10 +142,12 @@ private function resolveBindings(Query $query): array { $bindings = []; + $serializerFactory = $this->serializerFactory->in($this->context); + foreach ($query->bindings as $key => $value) { if ($value instanceof Query) { $value = $value->execute(); - } elseif ($serializer = $this->serializerFactory->in($this->context)->forValue($value)) { + } elseif ($serializer = $serializerFactory->forValue($value)) { $value = $serializer->serialize($value); } diff --git a/tests/Integration/Container/TaggedDynamicInitializerTest.php b/tests/Integration/Container/TaggedDynamicInitializerTest.php index 815d47f1e..19b0abc64 100644 --- a/tests/Integration/Container/TaggedDynamicInitializerTest.php +++ b/tests/Integration/Container/TaggedDynamicInitializerTest.php @@ -7,12 +7,14 @@ use Tempest\Database\Config\SQLiteConfig; use Tempest\Database\Database; use Tempest\Database\DatabaseInitializer; +use Tempest\Mapper\SerializerFactory; final class TaggedDynamicInitializerTest extends TestCase { public function test_resolve(): void { $container = new GenericContainer(); + $container->singleton(SerializerFactory::class, new SerializerFactory($container)); $container->addInitializer(DatabaseInitializer::class); $container->config(new SQLiteConfig(