Doctrine2 Mongodb добавив еще $ или оператор - PullRequest
3 голосов
/ 17 сентября 2011

Может ли doctrine2 ODM создать следующий запрос?

db.Product.find({ "$or": [ { "name": new RegExp("test*", "i") }, { "tags": new RegExp("public true*", "i") } ], "$or": [{ "public": false, "_id": { "$in": [ ObjectId("4e74121c4fcfa9ff7ac90000"), ObjectId("4e74121c4fcfa9ff7ac80000") ] } }, { "public": true }] });

Основная проблема здесь с doctrine2, которую я не понимаю, это как добавить дополнение $ или в запросе $?

Это поможет мне с $ и оператором, который все еще отсутствует.

Я сейчас использую Symfony2 Doctrine2 Mongodb

Ответы [ 2 ]

6 голосов
/ 05 декабря 2011
/**
 * Adds an "or" expression to the current query.
 *
 * You can create the expression using the expr() method:
 *
 *     $qb = $this->createQueryBuilder('User');
 *     $qb
 *         ->addOr($qb->expr()->field('first_name')->equals('Kris'))
 *         ->addOr($qb->expr()->field('first_name')->equals('Chris'));
 *
 * @param array|QueryBuilder $expression
 * @return Builder
 */



/**
 * Adds an "and" expression to the current query.
 *
 * You can create the expression using the expr() method:
 *
 *     $qb = $this->createQueryBuilder('User');
 *     $qb
 *         ->addAnd($qb->expr()->field('first_name')->equals('Kris'))
 *         ->addAnd($qb->expr()->field('first_name')->equals('Chris'));
 *
 * @param array|QueryBuilder $expression
 * @return Query
 */
2 голосов
/ 12 июня 2013

Небольшой пример в дополнение к теории:

Запрос в meta-language:

<condition1> AND (<field1 == value1> OR <field2 == value2>)

Запрос с доктриной QueryBuilder:

$queryBuilder
    ->addAnd(<condition1>)
    ->addAnd(
        $queryBuilder
            ->expr()
            ->addOr(
                $queryBuilder
                    ->expr()
                    ->field('field1')
                    ->equals('value1')
            )->addOr(
                $queryBuilder
                    ->expr()
                    ->field('field2')
                    ->equals('value2')
            )
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...