0
votes

I am trying to get objects from DQL query. Here is my code :

$em = $this->getDoctrine()->getRepository(Item::class);

$items = $em->createQuery($getQuery);
$items = $query->getResult();

$getQuery = DQL query string : SELECT from Entity WHERE ...

I am receiving error : Undefined method 'createQuery'. The method name must start with either findBy or findOneBy! I don't understand it, bcz this example is copied from official documentation. How I can execute DQL query in queryBuilder/createQuery?

1
Does Item::class entity class have a repository?Oluwafemi Sule
Yes. namespace AppBundle\Repository; use Doctrine\ORM\EntityRepository; /** * ItemRepository * * This class was generated by the Doctrine ORM. Add your own custom * repository methods below. */ class ItemRepository extends EntityRepository { }Mohim
What is in getDoctrine()?Oluwafemi Sule
What do you mean @OluwafemiSule ? Nothing inside ( ).Mohim
I mean the method body for getDoctrine(). Did you write it?Oluwafemi Sule

1 Answers

0
votes

Entity manager has a createQuery method.

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

$query = $em->createQuery($getQuery);

$items = $query->getResult();

Repository has a createQueryBuilder method.

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

$qb = $em->getRepository(Item::class)->createQueryBuilder();
$query = qb->select('[columns]')->from('Entity')->where('[condition]')->getQuery();
$items = $query->getResult();