doctrine2 - querybuilder,空参数

dea*_*ase 2 doctrine query-builder doctrine-orm

如果参数没有值,我该怎么办?

我的查询:

$query = $this->_em->createQueryBuilder()
                   ->select('u')
                   ->from('Users', 'u')
                   ->where('u.id = ?1')                   
                   ->andWhere('u.status= ?2')
                   ->setParameter(1, $userid)
                   ->setParameter(2, $status)
                   ->getQuery();

return $query->getResult();
Run Code Online (Sandbox Code Playgroud)

如果没有$状态,那么它不会显示任何内容.

我尝试在查询之前设置一个条件来检查它是否为null,但是如果没有设置状态,我可以设置$ status的值

Max*_*Max 9

查询构建器正好用于构建条件查询.你可以这样做:

$qb = $this->_em->createQueryBuilder();

$query = $qb->select('u')
            ->from('Users', 'u')
            ->where('u.id = ?1')                   
            ->setParameter(1, $userid);

if ($status) {
    $qb->andWhere('u.status = ?2')
       ->setParameter(2, $status);
}

return $qb->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)

另外,最好使用命名占位符,例如:

    $qb->andWhere('u.status = :status')
       ->setParameter('status', $status);
Run Code Online (Sandbox Code Playgroud)