gpt4 book ai didi

php - Symfony2,创建querybuilder where子句,不为空或不为空

转载 作者:IT老高 更新时间:2023-10-29 00:21:34 26 4
gpt4 key购买 nike

我在实体中有一个类型数组字段,

MyEntity.php

/**
* @var string
*
* @ORM\Column(name="excepcionMenu", type="array", length=255, nullable=true)
*/
private $excepcion;

我想让 QueryBuilder$excepcion 字段中选择 not emptynot null

我在努力MyEntityRepository.php

public function findAllExcepcionesByItem($itemId) {

$query = $this->createQueryBuilder('p')
->leftJoin('p.item', 'i')
->where('i.id = :actual')->setParameter('actual', $itemId)
->andWhere('p.excepcion IS NOT NULL')
->getQuery();

return $query->getResult();
}

但这会返回所有表记录。

public function findAllExcepcionesByItem($itemId) {

$query = $this->createQueryBuilder('p')
->leftJoin('p.item', 'i')
->where('i.id = :actual')->setParameter('actual', $itemId)
->andWhere('p.excepcion IS NULL')
->getQuery();

return $query->getResult();
}

但这会返回零条记录。

数据库中的这个字段以这种方式存储值:

a:0:{} // empty
N; // null
a:2:{i:0;i:2;i:1;i:4;} // not empty or not null

是否可以使用 QueryBuilder 来完成此操作,还是应该使用 DQL 来完成?

非常感谢


@Attila Szalay 贡献的更新解决方案

public function findAllExcepcionesByItem($itemId) {

$query = $this->createQueryBuilder('p')
->leftJoin('p.item', 'i')
->where('i.id = :actual')->setParameter('actual', $itemId)
->andWhere('p.excepcion != :null')->setParameter('null', serialize(null)) //not null
->andWhere('p.excepcion != :empty')->setParameter('empty', serialize([])) //not empty
->getQuery();

return $query->getResult();
}

最佳答案

对我有用的问题的另一个解决方案是:

public function findAllExcepcionesByItem($itemId) {
$query = $this->createQueryBuilder('p')
->leftJoin('p.item', 'i')
->where("i.id = :actual")->setParameter("actual", $itemId)
->andWhere("p.excepcion != ''") // NOT EMPTY
->andWhere("p.excepcion IS NOT NULL") // NOT NULL
->getQuery();
return $query->getResult();
}

关于php - Symfony2,创建querybuilder where子句,不为空或不为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34743578/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com