Приветствую! Столкнулся с проблемой при написании скрипта переноса данных со старого сайта. Для быстроты и удобства было решено использовать Битриксовый ORM движок. Для начала были описаны 3 сущности (производные от DataManager) для 3 таблиц из старой БД. При чем для каждой сущности был переопредлен метод:
Код |
---|
public static function getConnectionName(){
return 'old_site'
}
|
Соотв. создано второе рабочее подключение(old_site) для connectionPool в bitrix/.settings.php. Начал запускать скрипт, поначалу показалось, что завелось., так как Битрикс крякнул, что одно из полей отсутствует(была очепятка в описании поля для сущности). Но при попытке сделать getList, вылетело исключение, что таблица в БД не найдена, но искало оно её не для подключения old_site, а для default. Полез смотреть в исходный код и обнаружил для класса Bitrix\Main\Entity\Query(1733 строка)
Код |
---|
$connection = Main\Application::getConnection(); |
т.е. берется подключение не сущности, а дефолтное. Это как то поцовато, не находите?
Отсюда пара вопросов: можно ли? и как?
З.Ы. Можно попытаться унаследоваться и написать свой DataManager для сущностей из второй базы в котором создавать опять таки унаследованный от стандартного класса Query объект, но как то это не кошерно.