Doctrin findOneBy z dowolnym wieloznacznikiem

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):

$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.

0

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

       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();
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:

// 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);

1 użytkowników online, w tym zalogowanych: 0, gości: 1