加入Mysql Doctrine Symfony 3

enter image description here

I have 4 tables and i'm trying make one search on database and get all, without success.

I need show one Menu Food like:

  1. Hamburguer ( categoriaMenu)
  • Big Mac ( ProdutoMenu )
  • Whooper ( ProdutoMenu)
  1. Sauce ( SubcategoriaMenu)
  • Chili (SubprodutoMenu)
  • Jalapenos (subprodutoMenu)
  1. Hamburguer Extra (subcategoriaMenu)
  • cow (subprodutoMenu)
  • chicken (subprodutoMenu)
Drinks ( CategoriaMenu)
  1. Juice ( SubcategoriaMenu)
  • Orange (SubprodutoMenu)
  • Pineapple (subprodutoMenu)
  1. Soda ( SubcategoriaMenu)
  • Coca (SubprodutoMenu)
  • Water (subprodutoMenu)
$this->getDoctrine()->getManager()->createQuery(
                'SELECT cat.nome,p.descricao, p.valor, p.informacoes, s, sp
                      FROM AppBundle:Categoria cat
                      LEFT JOIN AppBundle:Produto p WITH (p.categoria = cat.id AND p.ativo=\'1\')
                      LEFT JOIN AppBundle:Subcategoria s WITH (s.categoria = cat.id AND s.ativo=\'1\')
                      LEFT JOIN AppBundle:Subproduto sp WITH (sp.subcategoria = s.id AND cat.id = sp.subcategoria AND  sp.ativo=\'1\')

                       WHERE cat.ativo =\'1\'');

Every start with Categoria,branch to produto(maybe) or directly to subcategoria, and subcategoria branch to subproduto. For a while, i do;

  • Search all categorias

{% for categoria in categorias %} {{ categoria.descricao }} {% endfor %}

When user click on categoria, the jquery get data from another page, pass as parameter the categoria_id.

That way i'm loosing very time, because each click do another search on database.