Я ищу возможность получить правильный Entity Manager для данного экземпляра объекта (или просто для имени класса).
Было отмечено, что doctrine ManagerRegistry имеет метод getManagerForClass, который принимает имя класса и должен возвращать правильный соответствующий Entity Manager.
Однако, когда я вызываю его, он всегда возвращает значение по умолчанию.
orm:
auto_generate_proxy_classes: '%kernel.debug%'
default_entity_manager: default
entity_managers:
default:
naming_strategy: doctrine.orm.naming_strategy.underscore
connection: default
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
gedmo_loggable:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/vendor/gedmo/doctrine-extensions/lib/Gedmo/Loggable/Entity'
prefix: Gedmo\Loggable\Entity
alias: GedmoLoggable # this one is optional and will default to the name set for the mapping
lobbytrack:
naming_strategy: doctrine.orm.naming_strategy.underscore
connection: lobbytrack
mappings:
Lobbytrack:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity/Lobbytrack'
prefix: 'App\Entity\Lobbytrack'
alias: Lobbytrack
Я тестирую сущность в базе данных obbytrack , посетитель .
$entityClass = 'App\Entity\Lobbytrack\Visitor';
$this->entityManager = $this->managerRegistry->getManagerForClass($entityClass);
Если я проверяю возвращенный entityManager, я вижу, что он получает диспетчер сущностей по умолчанию , когда он должен возвращать obbytrack .
Конфигурация объекта посетителя помещает его в соответствующее пространство имен, и, насколько я могу судить, именно так он определяет, какой менеджер соответствует какому объекту.
namespace App\Entity\Lobbytrack;
use Doctrine\ORM\Mapping as ORM;
/**
* Visitor
*
* @ORM\Table(name="visitor")
* @ORM\Entity(repositoryClass="App\Repository\Lobbytrack\VisitorRepository")
* @ORM\HasLifecycleCallbacks
*/
class Visitor
{
Я думаю, что-то есть в моемКонфигурация, которая нарушает это, но я не вижу, что.