Doctrine Mongo update $ pull, запрос не работает - PullRequest
2 голосов
/ 24 августа 2011

Я пытаюсь удалить ссылки на документ (с целью удаления указанного документа) с помощью $pull запроса на обновление, однако, похоже, ничего не происходит.

Я могу вручную выполнить следующий запрос Монго

db.collection.update({}, {
    $pull: {
        'field': {'$id': ObjectId("xxxxxxxx")}
    }
}, false, true)

, который работает нормально. Попытка сделать то же самое в ODM Doctrine не приводит ни к ожидаемому результату, ни к сообщениям об ошибках. Вот что мы имеем до сих пор

$id = new MongoId("xxxxxxxx");

$qb = $repo->createQueryBuilder();
$qb->update();
$qb->field('field')->pull(array('$id' => $id));
$qb->getQuery()->execute();

Есть какие-нибудь намеки на то, что я делаю неправильно?

Ответы [ 2 ]

5 голосов
/ 24 августа 2011

Ах, наконец-то нашел его после обхода кода Доктрины ...

Нужно передать параметр multi до MongoCollection::update()

$qb->getQuery(array('multiple' => true))->execute();
0 голосов
/ 18 апреля 2012
 $friend = Zend_Registry::get('doctrine')->getDocumentManager()->createQueryBuilder('App\document\Message')->update()->field('unread')->set(TRUE)->field('viewer_id')->equals(10001)-> getQuery(array('multiple' => true))->execute();
...