Собственный запрос Doctrine 2.0 без сопоставления - PullRequest
4 голосов
/ 09 сентября 2011

Я пишу крошечный скрипт миграции и пытаюсь обновить только один атрибут одного элемента.Результат, который мне нужен, не имеет Представления в локальной среде, поэтому мне нужен очень простой обработчик SQL (здесь это Oracle), который я могу перебрать и получить возвращенный массив.

Возможно ли это сдоктрина?

то есть я бы хотел сделать это:

$query = "SELECT t2.status FROM t2 LEFT JOIN t1 ON t1.id = t2.foreinkey";
$iterator = $connection->execute($query)->iterate();
foreach ($iterator as $array) {
    // do something with an associative array
}

ОБНОВЛЕНИЕ / РЕШЕНИЕ: С подсказкой от Корбина я придумал это решение, которое работает довольно хорошо:

$query = "SELECT t2.status FROM t2 LEFT JOIN t1 ON t1.id = t2.foreinkey";
$iterator = $connection->query($query);
while (is_object($iterator) AND ($array = $iterator->fetch()) !== FALSE) {
        // do something with an associative array
}

1 Ответ

6 голосов
/ 09 сентября 2011

http://www.doctrine -project.org / docs / orm / 2.0 / en / reference / native-sql.html Если вы хотите выполнить какое-либо сопоставление.Другой вариант - получить объект подключения из EntityManager :: getConnection и работать с ним.

Он возвращает Doctrine \ DBAL \ Connection, с которым вы должны иметь возможность работать.Он имеет типичный fetchColumn fetchArray fetchAssoc и т. Д.

...