Domanda Come fare una query simile al database in Symfony2


Questo dovrebbe essere semplice ma non riesco a trovare un esempio funzionante. Ecco un metodo di controllo che genera l'errore "Numero di parametro non valido: il numero di variabili associate non corrisponde al numero di token". Sto postando con successo la variabile "searchterm" ma non riesco a far funzionare la query. Che cosa manca? Grazie!

 public function searchAction()
{
    $request = $this->getRequest();

    $searchterm = $request->get('searchterm');

    $em = $this->getDoctrine()->getEntityManager();

    $query = $em->createQuery("SELECT n FROM AcmeNodeBundle:Node n WHERE n.title LIKE '% :searchterm %'")
             ->setParameter('searchterm', $searchterm);

    $entities = $query->getResult();

    return array('entities' => $entities);

}

10
2017-09-11 16:41


origine


risposte:


Esempio di lavoro dal mio progetto Symfony2:

$qb = $this->createQueryBuilder('u');
$qb->where(
         $qb->expr()->like('u.username', ':user')
     )
     ->setParameter('user','%Andre%')
     ->getQuery()
     ->getResult();

24
2018-06-15 17:59



Dovresti scaricare la query creata per facilitare il debug.

Posso solo suggerire di provare anche il querybuilder:

$qb = $em->createQueryBuilder();
$result = $qb->select('n')->from('Acme\NodeBundle\Entity\Node', 'n')
  ->where( $qb->expr()->like('n.title', $qb->expr()->literal('%' . $searchterm . '%')) )
  ->getQuery()
  ->getResult();

doc


9
2017-09-12 06:08



Penso che questa opzione aiuti anche:

$qb = $this->createQueryBuilder('u');
$qb->where('u.username like :user')
     ->setParameter('user','%hereIsYourName%')
     ->getQuery()
     ->getResult();

3
2017-08-09 11:41



DOVE n.title LIKE '%: searchterm%'

dovrebbe essere

DOVE n.title LIKE: searchterm

public function searchAction() {
    $request = $this->getRequest();

    $searchterm = $request->get('searchterm');

    $em = $this->getDoctrine()->getEntityManager();

    $query = $em->createQuery("SELECT n FROM AcmeNodeBundle:Node n WHERE n.title LIKE :searchterm")->setParameter('searchterm', $searchterm);

    $entities = $query->getResult();

    return array('entities' => $entities);

}

2
2018-04-30 14:44



può essere AcmeNodeBundle\Node? In DQL AcmeNodeBundle:Node  :Node - parametro con nome


0
2017-09-12 05:00