I know there is syntax here, but I can't figure it out. I try to make SELECT and INNER JOIN from 5 tables, but Symfony complains that entities in JOIN are used before they are defined.
The actual error is as follows: [Semantical Error] line 0, col 121 near 'I ON C.id = ': Error: Identification Variable MySiteBundle:Items used in join path expression but was not defined before.
Here is the PHP code.
Note. . I reduced this query to two columns, two tables, and one join to give a simple question and show my point. The actual request is much longer and causes the same error.
$em = $this->getDoctrine()->getEntityManager(); $query = $em->createQuery( 'select C.name as CName, I.id as IId FROM MySiteBundle:Categories C INNER JOIN MySiteBundle:Items I ON C.id = I.category_id'); $result = $query->getResult();
Update
As I said, I am done with DQL code and am using Query Builder code. I get a very similar error that says 'Categories c': Error: Class 'Categories' is not defined . My QB code is below.
$em = $this->getDoctrine()->getEntityManager(); $qb = $em->createQueryBuilder() ->select('c.name, i.id, i.image, i.name, i.description, m.id, m.quantity, m.value, m.qty_received, m.custom_image, m.custom_name, m.custom_description, u.user1fname, u.user1lname, u.user2fname, u.user2lname') ->from('Categories', 'c') ->innerJoin('Items', 'i', 'ON', 'c.id = i.category_id') ->innerJoin('MemberItems', 'm', 'ON', 'i.id = m.item_id') ->innerJoin('User', 'u', 'ON', 'm.memberinfo_id = u.id') ->where('u.id = ?', $slug) ->orderBy('c.id', 'ASC') ->getQuery(); $memberItems = $qb->getResult();
Any suggestions?