Добрый день!
Возникла задача работать с двумя независимыми базами с одного ядра битрикс.
Есть огромное желание использовать ORM в этой задаче.
Нашел, что в битриксе присутствует такая вещь, как:
А в DataManager такая:
Я подумал, что сейчас будет достаточно просто перекрыть этот метод и написать return 'second'; И уже хотел обрадоваться. Но не тут-то было.
Просмотрев основные классы main/lib/entity/datamanager.php и main/lib/entity/query.php, пришёл к выводу, что для работы с несколькими connections они не рассчитаны. И это при том, что, по сути, всё уже готово для такого использования! Просто, везде где речь идет о коннекте, я с грустью встречал:
Везде и всюду дефолт... А ведь всё готово, чтобы написать $connection = $entity->getConnection(); (datamanager.php, 512 строка)
Одна строка, и проблема решена.
Единственное, что получилось сделать (без правки ядра битрикса) - query select вот таким образом:
Add, delete, update отправить на второй коннект возможности нет. Или я что-то не правильно понял.
Короче вопрос - планируется ли в orm поддержка много-коннектовости, или она уже есть, только мне с другой стороны подойти надо к ней.
Возникла задача работать с двумя независимыми базами с одного ядра битрикс.
Есть огромное желание использовать ORM в этой задаче.
Нашел, что в битриксе присутствует такая вещь, как:
Код |
---|
Main\Application::getInstance()->getConnectionPool()->getConnection("second"); |
Код |
---|
public static function getConnectionName() { return 'default'; } |
Просмотрев основные классы main/lib/entity/datamanager.php и main/lib/entity/query.php, пришёл к выводу, что для работы с несколькими connections они не рассчитаны. И это при том, что, по сути, всё уже готово для такого использования! Просто, везде где речь идет о коннекте, я с грустью встречал:
Код |
---|
$connection = Main\Application::getConnection(); |
Одна строка, и проблема решена.
Единственное, что получилось сделать (без правки ядра битрикса) - query select вот таким образом:
Код |
---|
$query = SomeTable::query(); $query ->setSelect(array("ID"), ->setLimit(10); $connection = Main\Application::getInstance()->getConnectionPool()->getConnection("second"); $result = $connection->query($query->getQuery()); |
Короче вопрос - планируется ли в orm поддержка много-коннектовости, или она уже есть, только мне с другой стороны подойти надо к ней.