您好我想使用QueryBuilder
和Query\Expr
构建查询。
我的问题是构建子条件,以便获得所有这些条件的模型列表?
Status
为true
,不在model
名称Status
为false
,而不是model
名称的其他列表代码:
public function process(QueryBuilder $qb)
{
$cond1 = new Expr\Andx;
$cond1->add($qb->expr()->eq('status', 0);
$cond2= new Expr\Andx;
$cond2->add($qb->expr()->notIn('model', array('308','408'));
$cond1->add($cond2);
$cond3 = new Expr\Andx;
$cond3->add($qb->expr()->eq('status', 1);
$cond4= new Expr\Andx;
$cond4->add($qb->expr()->notIn('model', array('A1','A2'));
$cond3->add($cond4);
$qb->andWhere($cond1);
$qb->andWhere($cond3);
}
班级模型
Class Vehicle{
/**
* @var string
*
* @ORM\Column(name="model", type="string", length=255, nullable=true)
*/
private $modele;
/**
* @var string
*
* @ORM\Column(name="make", type="string", length=255, nullable=true)
*/
private $make;
/**
* @var boolean (status for vehicule 1 = Used vehicle)
*
* @ORM\Column(name="status", type="boolean")
* @Serializer\Groups({"list", "details"})
*/
private $status;
//-- Other properties, getter & setter
}
感谢您的帮助
答案 0 :(得分:2)
$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')
)
)
)
);
只要您阅读docs,就可以使用嵌套表达式
如果您需要帮助,请告诉我们。)
答案 1 :(得分:0)
感谢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));
)
);