查询生成器和子条件



嗨,我想使用 QueryBuilderQueryExpr 构建查询。我的问题是构建子条件,例如为了获得所有这些条件的模型列表?

  • Status true且不在model名称列表中
  • Status false,而不是在其他model名称列表中

法典:

public function process(QueryBuilder $qb)
{
   $cond1 = new ExprAndx;
   $cond1->add($qb->expr()->eq('status', 0);
   $cond2= new ExprAndx;
   $cond2->add($qb->expr()->notIn('model', array('308','408'));
   $cond1->add($cond2);
   $cond3 = new ExprAndx;
   $cond3->add($qb->expr()->eq('status', 1);
   $cond4= new ExprAndx;
   $cond4->add($qb->expr()->notIn('model', array('A1','A2'));
   $cond3->add($cond4);
   $qb->andWhere($cond1); 
   $qb->andWhere($cond3); 
}

类模型

Class Vehicle{
    /**
    * @var string
    *
    * @ORMColumn(name="model", type="string", length=255, nullable=true)
    */
    private $modele;
    /**
    * @var string
    *
    * @ORMColumn(name="make", type="string", length=255, nullable=true)
    */
    private $make;
    /**
    * @var boolean (status for vehicule 1 = Used vehicle)
    *
    * @ORMColumn(name="status", type="boolean")
    * @SerializerGroups({"list", "details"})
    */
    private $status;
    //-- Other properties, getter & setter
}

感谢您的帮助

$qb->andWhere(
  $qb->expr()->andx(
    $qb->expr()->andx(
      $qb->expr()->eq('status', 0),
      $qb->expr()->andx(
        $qb->expr()->notLike('model', '308'),
        $qb->expr()->notLike('model', '408')
      )
    ),
    $qb->expr()->andx(
      $qb->expr()->eq('status', 1),
      $qb->expr()->andx(
        $qb->expr()->notLike('model', 'A1'),
        $qb->expr()->notLike('model', 'A2')
      )
    )
  )
);
只要

您阅读文档,您就可以疯狂地使用嵌套表达式

如果您需要帮助,请告诉我:)

感谢Matteo & pcm

$qb->andWhere(
    $qb->expr()->orX(
        $qb->expr()->andX($qb->expr()->eq("status", 0), $qb->expr()->notIn("model", $listNewModel)),
        $qb->expr()->andX($qb->expr()->eq("status", 1), $qb->expr()->notIn("model", $listUsedModel));
    )
);

相关内容

  • 没有找到相关文章

最新更新