-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Bug]: Multiple entity managers per connection OR entity manager name does not match connection name #225
Comments
A dirty fix:
The problem is, that the |
Thanks for the report! Could you please open a PR with a fix? First we need to add a new Kernel with a new config that use more than entity manager, we only have one at the moment: https://github.com/liip/LiipTestFixturesBundle/blob/2.x/tests/AppConfigMysql/config.yml Then add tests that call the different entity managers. Shoud we update the -public function setObjectManagerName(string $omName = null): void
+public function setObjectManagerName(string $omName = null, ?string $connectionName = null): void
{
$this->omName = $omName;
$this->om = $this->registry->getManager($omName);
- $this->connection = $this->registry->getConnection($omName);
+ $this->connection = $this->registry->getConnection($connectionName ?? $omName);
} Then static::getContainer()
->get(DatabaseToolCollection::class)
->get('a_name_not_matching_connection_name', 'default')
->loadFixtures([YourFixtures::class]); may works. |
@alexislefebvre It looks like, it is not that easy. Loading fixtures like this:
the See:
I have no quick fix for this. So I found a workaround. I changed the doctrine configuration for the test environment, so that the number of connections is equal to the number of entity managers and the entity managers names do now match the connection name. E. g. like this: doctrine.yaml:
If there is no one else out there having the same problem, it is ok, to handle this as an edge case without fixing it. |
I tried to add a test with 2 connections and 2 entity managers and it added way more complexity than I expected: it means 2 different configurations for the entities, their schema and fixtures. I ended up with that classes that can't be found and I gave up. I'm sorry but I can't help with this topic. |
I also had a closer look, and - yes - it is more complex than it looked in the beginning. I do not have a really good idea right now, but I think, it is possible. I think most projects do not have to deal with more than one connection or entity manager. If I found a good solution, I'll let you know. Thanks for your support. |
Preconditions
If the entity manager does have a name not matching the connection name or if having multiple entity managers per connection, it is not possible to load fixtures.
The reason is because of this:
See:
LiipTestFixturesBundle/src/Services/DatabaseTools/AbstractDatabaseTool.php
Lines 107 to 112 in 9ec9d52
Versions:
Bundle 2.6.0
PHP 8.1
Steps to reproduce
Configure doctrine like this:
or this:
Then inside your test load a fixture like this:
or this:
Expected result
Successfully loading fixtures.
Actual result
or:
The text was updated successfully, but these errors were encountered: