Вы должны ввести правильного менеджера сущности (т. Е. Личность). Соответствующее имя службы - «doctrine.orm.identit_entity_manager».
Если вы хотите это в контроллере, я бы предложил привязать этот сервис в качестве аргумента в services.yaml:
App\Controller\FooController:
bind:
$identityManager: '@doctrine.orm.identity_entity_manager'
Тогда в вашем контроллере просто введите его через автопроводку и используйте его как положено:
class FooController extends AbstractController {
/**
* @Route("/bar", name="bar")
*/
public function bar($identityManager) {
...
$identityManager->getRepository(User::class)->findAll();
...
}
Я скачал и запустил ваш проект с github. Оказывается, что, как я уже заметил в моих комментариях, проблема заключалась в плохой конфигурации менеджеров сущностей в doctrine.yaml. Чтобы ваша программа работала корректно (она работала для меня), вы должны создать две новые директории (/ src / Entity / First, / src / Entity / Second), поместите файлы First.php и Second.php в эти директории соответственно. затем изменить вашу конфигурацию в doctrine.yaml на
doctrine:
dbal:
default_connection: default
connections:
default:
url: '%env(DATABASE_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
second:
url: '%env(SECOND_DATABASE_URL)%'
driver: 'pdo_mysql'
server_version: '5.7'
charset: utf8mb4
orm:
default_entity_manager: default
entity_managers:
default:
connection: default
mappings:
Main:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/First'
prefix: 'App\Entity\First'
alias: First
second:
connection: second
mappings:
Second:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/Second'
prefix: 'App\Entity\Second'
alias: Second
И тебе пора.
Проблема заключалась в том, что оба менеджера сущностей были сконфигурированы для обработки одних и тех же сущностей (с помощью опций "dir" и "prefix" в разделе orm). Это привело к конфликтам с непредсказуемым поведением. Действительно, из-за этого конфликта это был первый менеджер сущностей, который был вызван в хранилище Второго класса.