Doctrine2.5 con PHP 5.6

Tengo una variedad de cosas para buscar, ejemplo: en una tabla de usuario, quiero buscar los nombres de todos los que tienen el nombre "Reis" o "Shimidt" en el nombre del campo. Con la matriz

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

Quiero traer por ejemplo las siguientes entradas,

  • John Reis Carlson,
  • Mary Shimidt Lincoln,
  • Bill Reis Abdonor Gates.

Intenté algo como esto:

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

No funciona, también lo intenté así, pero obviamente devolví la matriz a la conversión de cadena:

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

¿Alguna idea de cómo solucionar esto, sin hacer un código desordenado?

1
Albert Abdonor 25 jul. 2017 a las 10:52

2 respuestas

La mejor respuesta

Te aconsejo que uses algo como esto:

foreach ($arraySearch as $search) {
    $this->query->orWhere(" pb.name LIKE :search ");
    $this->query->setParameter("search", '%'.$search.'%');
}
1
Albert Abdonor 25 jul. 2017 a las 08:59

Pruebe esto :

$this->query->setParameter('name', implode("%', OR name LIKE '%", $arraySearch));
0
Adrien Moiraud 25 jul. 2017 a las 08:28