gpt4 book ai didi

symfony - 原则 2 使用选项数组搜索数组字段

转载 作者:行者123 更新时间:2023-12-02 04:13:50 26 4
gpt4 key购买 nike

我有以下查询:

$roles = array();
$roles[] = 'ROLE_SUPER_ADMIN';
$roles[] = 'ROLE_ADMIN';
$roles[] = 'ROLE_TRUSTEE';
$roles[] = 'ROLE_MODERATOR';

$qb = $this->createQueryBuilder('u')
->select('u')
->where('u.username is not null')
->andWhere('u.roles IN (:roles)')
->setParameter('roles', $roles);

return $qb->getQuery()->getResult();

这有效。但这不是我所追求的。 u.roles 是一个数组字段,可以包含任意数量的“角色”。我需要查询该字段以查看它是否包含 $roles 定义的数组中列出的任何角色。本质上是相反的:

->andWhere('(:roles) IN u.roles')

但这会引发错误。

我的做法是错误的吗?

最佳答案

这是一个更好的版本

$roles = array();
$roles[] = 'ROLE_SUPER_ADMIN';
$roles[] = 'ROLE_ADMIN';
$roles[] = 'ROLE_TRUSTEE';
$roles[] = 'ROLE_MODERATOR';

$ar = new ArrayCollection();
$qb = $this->createQueryBuilder('u');
$qb ->select('u');
foreach($roles as $role){
$qb->andWhere('u.roles LIKE :roles')
->setParameter('roles', '%"'.$role.'"%');
}
$results = $qb->getQuery()->getResult();
foreach ($results as $result){
$ar[] = $result;
}

return $ar;

关于symfony - 原则 2 使用选项数组搜索数组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38999471/

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