2017-06-12 3 views
1

Ich würde ein wenig Hilfe brauchen. Ich versuche eine Suchleiste mit Symfony zu implementieren, diese Suchleiste in der Datenbank. Was ich tun kann, aber das Problem ist, dass ich absolut den vollständigen Namen setzen muss, um zu finden, dass die Person (en) diesem Namen entspricht. Abgesehen davon, dass ich alle Personen ab dem Beginn des eingegebenen Namens wiederfinden möchte. Zum Beispiel: I-Typ "Dub" und ich finde: "Dubois", "Dubost", "Dubububu", ....Forschung in der DB von Anfang an den Namen symfony

public function searchAction (Request $request) 
{ 
    $defaultData = array('search' => 'Type your search here'); 
    $form = $this->createFormBuilder() 
     ->add('search', TextType::class, array('label'=>'Surname ?','required'=>true)) 
     ->add('send', SubmitType::class) 
     ->getForm(); 


    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
     $data = $form->getData(); 
      $repository = $this 
        ->getDoctrine() 
        ->getManager() 
        ->getRepository('PegasusWebBundle:Clients') 
       ; 

       //$clients = $repository->findBySurname($form->get('search')->getData()); // Method 1 
       $clients = $repository->myFindname($form->get('search')->getData()); // Method 2 with Repository 
       return $this->render('PegasusWebBundle:Default:searchresult.html.twig',array(
       'clients'=> $clients)); 
      } 
    else 

    return $this->render('PegasusWebBundle:Default:search.html.twig', array(
     'form' => $form->createView(), 
    )); 
} 

Das Repository für die Methode 2

`Klasse ClientsRepository erweitert \ Lehre \ ORM \ EntityRepository {

 public function myFindname($name) 
    { 
    // Method 2 
    $qb = $this->createQueryBuilder('a'); 
    $qb->where(
    $qb->expr()->like('a.surname' ,':surname')) 
     ->setParameter('surname', $name); 

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

} `

Antwort

0

Versuchen Hinzufügen der wildchar zB:

$query = $repo->createQueryBuilder('a') 
      ->where('a.surname LIKE :surname') 
      ->setParameter('surname', '%'.$name.'%') 
      ->getQuery(); 
0

Try eine SQL Wildcard-Zeichen (%) nach dem Nachnamen Wert hinzugefügt wird.

Siehe auch this als Referenz.

Verwandte Themen