Я установил соединение с несколькими базами данных в моем проекте ZF2 с помощью Doctrine, один для чтения из базы данных, а другой для записи.ZF2 doctrine shared entity pool
Все работает хорошо, когда используется отдельно, но когда я пытаюсь использовать как на одной и той же сущности, как:
найти пользователя:
$ пользователя = $ this->getReaderObjectManager() -> getRepository ('Entity \ User') -> findOneBy (массив ('username' => 'xpto'));
, а затем попытаться изменить что-то:
$ this->getWriterObjectManager() -> не проходят ($ пользователя); $ user-> setBlabla ('bla');
, а затем попытаться очистить его:
$ this->getWriterObjectManager() -> флеша();
nohin 'бывает. не хорошо.
Кажется, что readerObjectManager и writerObjectManager самостоятельном «сущности пул», поэтому я не могу сохраняться и изменить один объект от другого менеджера.
Есть ли способ передать объект от одного менеджера другому, или ссылаться на него, или просто, что оба менеджера имеют один и тот же «пул сущностей»?
благодарит заранее.
Можете ли вы объяснить немного больше, что вы имеете в виду «на уровне соединения»? – MGP
Это означает, что объект соединения принимает решения о том, что обрабатывается с чтением и что с записью (обычно это происходит с средами master/slave). Если ваша проблема связана только с памятью PHP, используйте только очень интеллектуальный репозиторий. – Ocramius
Единственная проблема - необходимость чтения с одного db и записи в другой (настройки рабочей среды). Итак, создание пользовательского DBALConnection - это путь? Или есть способ, которым я могу обойти стандартное соединение orm_default, изменяющее информацию о соединении «на лету» basead в действии insert/update и select? – MGP