Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Symfony 2 - Problem z Doctrine
Forum PHP.pl > Forum > PHP
M4ver7071
Witam, chcę zrobić pole do szukania przedmiotu w Symfony 2. Napisałem kod który powinien działać poprawnie, ale zwraca mi pustą tablicę. Próbowałem już kilka sposób, taki produkt jest w bazie a nie wiem dlaczego zwraca pustą tablicę.


  1.  
  2. public function showAction(Request $request)
  3. {
  4. //$word = $request->query->get('keywords')['search'];
  5. $word = 'toshiba';
  6.  
  7. $repository = $this->getDoctrine()->getRepository('CustomExampleBundle:Product');
  8.  
  9. $query = $repository->createQueryBuilder('p')
  10. ->where('p.title= :word')
  11. ->setParameter('word', '%'.$word.'%')
  12. ->getQuery();
  13. $result = $query->getArrayResult();
  14.  
  15. print_r($result); die;
  16. // return $this->render('CustomExampleBundle:Search:search.html.twig', array(
  17. // 'entity' => $result));
  18. }

Proszę o pomoc.
pyro
  1. $qb->expr()->like('p.title', ':word')
M4ver7071
Możesz mi pokazać przykładową implementację, tego co napisałeś?
pyro
Przykłady na pewno są chociażby w dokumentacji Doctrine. Wystarczy włożyć odrobinę własnego wysiłku.
M4ver7071
Wiem, tylko problem polega na tym, że mój kod nie realizuje się poprawnie nie wiem w którym miejscu robie błąd więc chciałbym to zweryfikować na konkretnym przykładnie.
kazmij
Kolego Twój kod:

  1. $query = $repository->createQueryBuilder('p')
  2. ->where('p.title= :word')
  3. ->setParameter('word', '%'.$word.'%')
  4. ->getQuery();
  5. $result = $query->getArrayResult();


ja bym przerobił tak:

  1. $qb = $this->getDoctrine()->getManager()->createQueryBuilder();
  2. $query = $repository->createQueryBuilder('p')
  3. ->where($qb->expr()->eq('p.title', $qb->expr()->literal($word) ))
  4. ->getQuery();
  5. $result = $query->getArrayResult();


natomiast gdyby miałby to być like to:

  1. $qb = $this->getDoctrine()->getManager()->createQueryBuilder();
  2. $query = $repository->createQueryBuilder('p')
  3. ->where($qb->expr()->like('p.title', $qb->expr()->literal('%' . $word . '%') ))
  4. ->getQuery();
  5. $result = $query->getArrayResult();


u mnie zawsze tak działa.

Spróbuj.
M4ver7071
Dzięki za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.