为了账号安全,请及时绑定邮箱和手机立即绑定

根据条件在查询中设置参数

根据条件在查询中设置参数

PHP
一只萌萌小番薯 2022-07-29 16:19:26
我需要编写一个具有多个where条件和OR条件的查询。此OR条件仅在$location数组不为空时才会出现。所以只有当这个数组不为空时才需要参数。我不确定如何在这种情况下编写此参数条件。这是我正在处理的查询。$qb = $this->createQueryBuilder("e")            ->select(                 "e.vehicleId",                 "e.schemaId",                 "e.location",            )            ->andWhere("e.vehicleId = :vehicleId")            ->andWhere("e.optionId = :optionId")            ->andWhere("e.schemaId = :schemaId");if (count($position) > 0) {    $qb->andWhere($qb->expr()->orX(                $qb->expr()->andX("e.location = :location"),                $qb->expr()->andX("e.location = :loc")            ));}$qb->setParameters(array(            "vehicleId" => $vehicleId,            "schemaId" => $schemaId,            "location" => $position["location"],            "loc" => $position["loc"],        ));
查看完整描述

2 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

QueryBuilder有两种方法来设置查询参数。


您正在使用的那个 ( setParameters(array $parameters),并且更简单setParameter($parameterName, $parameterValue).


使用后者而不是您正在使用的那个,您可以在需要的地方设置参数:


if (count($position) > 0) {

    $qb->andWhere($qb->expr()->orX(

                $qb->expr()->andX("e.location = :location"),

                $qb->expr()->andX("e.location = :loc")

            ))

        ->setParameter('location', $position["location"])

        ->setParameter('loc', $position["loc"]);

}


查看完整回答
反对 回复 2022-07-29
?
慕神8447489

TA贡献1780条经验 获得超1个赞

您可以创建包含条件参数的 parameteR 数组。


if (count($position) > 0) {

    $qb->andWhere($qb->expr()->orX(

        $qb->expr()->andX("e.location = :location"),

        $qb->expr()->andX("e.location = :loc")

    ));


     $parameter["location"] = $position["location"];

     $parameter["loc"] = $position["loc"];

}

然后将这个参数数组传递并合并到 setParameters 方法中。


$qb->setParameters(array_merge(

        array(

            "vehicleId" => $vehicleId,

            "schemaId" => $schemaId,

        ),

        $parameters

));


查看完整回答
反对 回复 2022-07-29
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信