小编baz*_*azo的帖子

Doctrine MongoDB ODM在两个或多个字段中搜索

我想在Doctrine Mongo ODM中编写一个查询,在两个或多个字段中通过regex进行搜索.在SQL中它看起来像:

SELECT * FROM user WHERE name LIKE %search% OR surname LIKE %search%;
Run Code Online (Sandbox Code Playgroud)

我可以像这样写一个字段的查询:

$qb->field('surname')->equals(new \MongoRegex('/.*'.$this->search.'.*/i'));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试在更多领域进行搜索时,我感到很茫然.

谢谢你的帮助

php mongodb odm doctrine-odm

11
推荐指数
1
解决办法
3396
查看次数

原则2:批处理插入引用其他实体的实体时的奇怪行为

我正在尝试这里描述的批处理方法:http: //docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/batch-processing.html

我的代码看起来像这样

    $limit = 10000;
    $batchSize = 20;
    $role = $this->em->getRepository('userRole')->find(1);
    for($i = 0; $i <= $limit; $i++)
    {
        $user = new \Entity\User;
        $user->setName('name'.$i);
        $user->setEmail('email'.$i.'@email.blah');
        $user->setPassword('pwd'.$i);
        $user->setRole($role);
        $this->em->persist($user);
         if (($i % $batchSize) == 0) {
             $this->em->flush();
             $this->em->clear();
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是,在第一次调用em-> flush()之后,$ role也会被分离,并且每20个用户创建一个带有新id的新角色,这不是我想要的

这种情况有没有可用的解决方法?只有一个我可以做的工作是每次在循环中获取用户角色实体

谢谢

php bulkinsert doctrine-orm

6
推荐指数
1
解决办法
2634
查看次数

Doctrine ODM - 类似于运算符语法

我将如何在doctrine odm中从SQL模拟类似运算符?

用例:我想在变量$ search中找到字段字幕字符串中的某个主题.

查询怎么样?

谢谢你的所有答案

php mongodb doctrine-odm sql-like

6
推荐指数
1
解决办法
3756
查看次数

独特的指数与学说mongodb odm

我正在为我的网站做一个注册系统,并希望防止使用相同的电子邮件地址重复注册.

用户类的声明如下所示:

/**
 * @Document
 */
class User extends BaseEntity
{
    private 
    /**
     * @Id
     */
    $id,

    /**
     * @String @Index(unique=true)
     */    
    $email
;
}
Run Code Online (Sandbox Code Playgroud)

但每当我使用相同的电子邮件保存用户时,不会引发异常,我会得到重复.

我找到了我需要做的地方$ documentManager-> flush(array('safe'=> true)); 但这没有用.

我怎样才能实现我的需要?谢谢

doctrine mongodb doctrine-odm

1
推荐指数
1
解决办法
2772
查看次数