2017-07-25 146 views
1

Doctrine2.5随着PHP 5.6

我有一个事物的阵列进行搜索,例如: 以用户为表,我想在字段名称中搜索名称为“Reis”或“Shimidt”的所有人的姓名。随着阵列

$arraySearch = ['Reis', 'Shimidt']; 

我要带上例如下面的条目,

  • 约翰·雷斯卡尔森,
  • 玛丽Shimidt林肯,
  • 比尔李嘉欣Abdonor·盖茨。

我想是这样的:

$this->query->andWhere(" pb.name LIKE '%:name%' "); 
$this->query->setParameter('name', $name, \Doctrine\DBAL\Types\Type::SIMPLE_ARRAY); 

它不工作,我也试过这样的,但显然返回数组字符串转换:

$this->query->setParameter('name', '%'.$name.'%', \Doctrine\DBAL\Types\Type::SIMPLE_ARRAY); 

任何想法如何解决这个,没有做一个凌乱的代码?

回答

1

我建议你使用这样的:

foreach ($arraySearch as $search) { 
    $this->query->orWhere(" pb.name LIKE :search "); 
    $this->query->setParameter("search", '%'.$search.'%'); 
} 
+0

感谢亚历山德罗,这样的作品。 –

+0

很高兴为您服务!接受答案,以帮助其他人与您的同样的问题@AlbertAbdonor –

0

试试这个:

$this->query->setParameter('name', implode("%', OR name LIKE '%", $arraySearch)); 
+0

你忘了格式化你的答案为代码:) – ArtOsi

+0

编辑,对不起 –