-
-
Notifications
You must be signed in to change notification settings - Fork 79
Description
Tbh, I am not 100% sure that this issue lies within this library, within doctrine/orm or within doctrine/dbal. Having said that, let me share my findings on what is happening to me.
The project in question is based on doctrine/orm, which is being tested locally with the pdo_sqlite library. I have two very basic entities with the following mapping:
#[ORM\Entity]
#[ORM\Table(name: 'accounts')]
#[ORM\InheritanceType('SINGLE_TABLE')]
#[ORM\DiscriminatorColumn(name: 'type', type: 'string')]
#[ORM\DiscriminatorMap([
'organization' => Organization::class,
'user' => User::class,
])]
abstract class Account
{
public function __construct(
#[ORM\Id]
#[ORM\Column(type: 'uuid_binary')]
private UuidInterface $id,
#[ORM\Column(type: 'string', unique: true)]
private string $name,
#[ORM\Column(type: 'string', unique: true)]
private string $email,
#[ORM\Column(type: 'string', enumType: Level::class)]
private Level $level,
#[ORM\Column(type: 'datetime_immutable')]
private DateTimeImmutable $createdAt,
) {
}#[ORM\Entity]
class User extends Account
{
}#[ORM\Entity]
class Organization extends Account
{
}Plus an association class with the following definition:
#[ORM\Entity]
#[ORM\Table(name: 'accounts_members')]
#[ORM\UniqueConstraint(columns: ['organization_id', 'user_id'])]
class Member
{
final public function __construct(
#[ORM\Id]
#[ORM\Column(type: 'uuid_binary')]
private UuidInterface $id,
#[ORM\ManyToOne(targetEntity: Organization::class, fetch: 'EAGER')]
#[ORM\JoinColumn(name: 'organization_id', referencedColumnName: 'id')]
private Organization $organization,
#[ORM\ManyToOne(targetEntity: User::class, fetch: 'EAGER')]
#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id')]
private User $user,
#[ORM\Column(type: 'string', enumType: Role::class)]
private Role $role,
) {
}
}I believe the entities are self-explanatory, but I will be happy to provide more context if necessary.
That being said, I am running this code inside the controller:
$entityManager = $this->getEntityManager();
$repo = $entityManager->getRepository(Member::class);
$all = $repo->findAll();After which I am getting the following Exception:
In ExceptionConverter.php line 83:
[Doctrine\DBAL\Exception\DriverException]
An exception occurred while executing a query: Unknown parameter type, 116 given.
Exception trace:
at /.web/model/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php:83
Doctrine\DBAL\Driver\API\SQLite\ExceptionConverter->convert() at /.web/model/vendor/doctrine/dbal/src/Connection.php:1907
Doctrine\DBAL\Connection->handleDriverException() at /.web/model/vendor/doctrine/dbal/src/Connection.php:1850
Doctrine\DBAL\Connection->convertExceptionDuringQuery() at /.web/model/vendor/doctrine/dbal/src/Connection.php:1069
Doctrine\DBAL\Connection->executeQuery() at /.web/model/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:916
Doctrine\ORM\Persisters\Entity\BasicEntityPersister->loadAll() at /.web/model/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:3015
Doctrine\ORM\UnitOfWork->triggerEagerLoads() at /.web/model/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/SimpleObjectHydrator.php:68
Doctrine\ORM\Internal\Hydration\SimpleObjectHydrator->hydrateAllData() at /.web/model/vendor/doctrine/orm/lib/Doctrine/ORM/Internal/Hydration/AbstractHydrator.php:270
Doctrine\ORM\Internal\Hydration\AbstractHydrator->hydrateAll() at /.web/model/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php:920
Doctrine\ORM\Persisters\Entity\BasicEntityPersister->loadAll() at /.web/model/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php:225
Doctrine\ORM\EntityRepository->findBy() at /.web/model/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php:207
Doctrine\ORM\EntityRepository->findAll() at /.web/model/src/Handler/ListMembers.php:19
App\Handler\ListMembers->__invoke() at /.web/model/src/Console/Command/ListMembers.php:27
App\Controller\ListMembers->execute() at /.web/model/vendor/symfony/console/Command/Command.php:312
Symfony\Component\Console\Command\Command->run() at /.web/model/vendor/symfony/console/Application.php:1022
Symfony\Component\Console\Application->doRunCommand() at /.web/model/vendor/symfony/console/Application.php:314
Symfony\Component\Console\Application->doRun() at /.web/model/vendor/symfony/console/Application.php:168
Symfony\Component\Console\Application->run() at /.web/model/bin/console:34
After some investigation into the issue, I found out that the misterious unknown parameter 116 is 'created' here:
Doctrine\ORM\Persisters\Entity\BasicEntityPersister->loadAll()
Which eventually calls this (the actual line where the 116 is 'added'):
Does anyone have any idea why I am getting this error?
Locked versions of the libraries are:
doctrine/orm,2.14.1ramsey/uuid-doctrine,2.0.0ramsey/uuid,4.7.3