Doctrin findOneBy z dowolnym wieloznacznikiem

Doctrin findOneBy z dowolnym wieloznacznikiem
  • Rejestracja: dni
  • Ostatnio: dni
0

Witajcie,

Tworzę swój kod z pomocą symfony3 i doctrine. Czy jest jakiś sposób aby dodać wildcard (dowolny wieloznacznik - % lub *) do mojego zapytania. np w taki sposób: (nie działa):

Kopiuj
$db = $this->getDoctrine()->getRepository('MyBundle:News')->findOneBy(array('content' => '%szukany tekst%'));

if($db){
    echo $db->getTitle().' - <br>'; 
}

W jaki sposób mogę uzyskać podobne wyszukiwanie?

Z góry dzięki za pomoc, dopiero uczę się Symfony.

  • Rejestracja: dni
  • Ostatnio: dni
0

w repository zrób sobie metode query builder, coś takiego

Kopiuj
       return $this->getEntityManager()->createQuery('
        SELECT t, c FROM FitnesBundle:EVENT t 
        LEFT JOIN t.user c
        WHERE c.roles [LIKE] :roles
   ')->setParameter('roles', '%"ROLE_EDITOR"%')->getResult();
DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1788
0

Nie jestem pewien czy to działa, ale z tego co patrze po kodzie Doctrina, to możesz tam przekazać zamiast tablicy instancję klasy Criteria:

Kopiuj
// dodaj use na samej górze oczywiście
use Doctrine\Common\Collections\Criteria;

$criteria = new Criteria();
$criteria->where($criteria->expr()->eq('content', '%szukany tekst%'));

// W Symfony w Controllerze nie było przypadkiem helpera getRepository? Chyba nie musisz robić getDoctrine najpierw, chociaż nie pamiętam..
$repository = $this->getDoctrine()->getRepository('MyBundle:News'); 
$news = $repository->findOneBy($criteria);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.