如何在Symfony2中使用MongoDB创建WHERE ... OR ...查询?

时间:2012-10-04 04:09:12

标签: mongodb symfony doctrine-orm symfony-2.1 doctrine-odm

在我的UserRepository内部,我想创建自定义查询,例如我在不使用MongoDB时可以使用$dm->createQuery('some query')创建的查询。

我该怎么做?我看到$this->createQueryBuilder()方法存在,但$this->createQuery()没有。

我也试过这个,因为它有意义,但没有用:

$this->createQueryBuilder('u')
    ->where(array('$or' => array(
        array('u.username' => $username),
        array('u.email' => $username)
    )))
    // ...

它表示$或是无效的运营商。

1 个答案:

答案 0 :(得分:2)

在此处找到:Doctrine2 Mongodb adding more $or operator

/**
 * 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
 */