如何在数组列中执行选择 - Symfony3 + Doctrine

时间:2016-05-25 02:09:41

标签: php doctrine-orm doctrine symfony

我用Symfony3创建了一个实体,我在数据库中将字段列设置为Array。

Symfony保存到DB寄存器,如:

id | name    | roles
01 | Raphael | ["ROLE_ADMIN", "ROLE_SUPER_ADMIN"] 
02 | Jose A. | ["ROLE_ADMIN"] 
03 | Marcos  | ["ROLE_USER"] 

如何仅针对ROLE_ADMINROLE_USER执行带有学说的选择?

我需要为许多其他情况创建搜索...但这个是最容易解释的......

希望你了解我的情况......谢谢!

1 个答案:

答案 0 :(得分:0)

我使用这种语法解决了我的问题:

$formData = $form->getData();
$em = $this->getDoctrine()->getManager();
$usersRepository = $em->getRepository('AppBundle:Usuario');
$qb = $usersRepository->createQueryBuilder('r');
$qb->select('a')
    ->from('AppBundle:Usuario', 'a');

foreach($formData as $key => $value) {
     foreach($value as $k => $item){
         $qb->andWhere("a.$key LIKE :it_$k")
             ->setParameter("it_$k", '%'.$item.'%');
     }
}
$result = $qb->getQuery()->execute();