Php 根据条件设置查询中的参数
我需要编写一个带有多个where条件和OR条件的查询。仅当$location数组不为空时,才出现此OR条件。因此,仅当此数组不为空时才需要参数 我不知道如何在此条件下写入此参数条件 这就是我正在研究的问题Php 根据条件设置查询中的参数,php,symfony,doctrine-orm,query-builder,Php,Symfony,Doctrine Orm,Query Builder,我需要编写一个带有多个where条件和OR条件的查询。仅当$location数组不为空时,才出现此OR条件。因此,仅当此数组不为空时才需要参数 我不知道如何在此条件下写入此参数条件 这就是我正在研究的问题 $qb = $this->createQueryBuilder("e") ->select( "e.vehicleId", "e.schemaId", "e
$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"],
));
QueryBuilder有两种方法来设置查询参数
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"];
}
您正在使用的setParametersarray$parameters和更简单的setParameterName$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"]);
}
QueryBuilder有两种方法来设置查询参数
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"];
}
您正在使用的setParametersarray$parameters和更简单的setParameterName$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"]);
}
可以创建包含条件参数的参数数组
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
));
可以创建包含条件参数的参数数组
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
));