亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據條件在查詢中設置參數

根據條件在查詢中設置參數

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 關注
  • 122 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號