2016-05-13 7 views
1

I 3 Werte abrufen möchten, 2 von einem ‚Umsatz‘ Tabellennamen und 1 aus einer Tabelle mit dem Namen ‚Produkte‘, schrieb ich DQL folgende:Symfony: Fehler beim Verbinden 2 Tabellen-Werte in separaten Spalten zu holen

$repo = $em->getRepository('SystemBundle:Sales'); 
     $q = $repo->createQueryBuilder('s') 
      ->select('s.units','s.timestamp','p.price') 
      ->join('SystemBundle:Product', 'p') 
      ->where('s.prodId = p.id AND p.company=:comp') 
      ->setParameter('comp', $cid) 
      ->getQuery() 
      ->getArrayResult(); 
     return new JsonResponse($q); 

aber ich bin immer diese Fehlermeldung:

[Semantical Error] line 0, col 81 near 'SystemBundle:Product': Error: Class 'SystemBundle\Entity\Product' is not defined.

Es ist mein erstes Mal mit schließt sich in der Lehre arbeiten, so dass ich denke, ich mit Syntax bin Unordnung hier .. bitte helft diesen

dank der Lösung

+0

Does Verkäufe haben eine Beziehung zum Produkt? Wenn das der Fall sein sollte, sollte '-> beitreten (' s.products ',' p ');' Dabei ist "Produkte" der Name, den Sie als Beziehungsnamen festgelegt haben. und der prodId = id-Teil von dem, wo sollte übersprungen werden – JimL

+0

Warum hast du das Ergebnis nicht mit Doktrin abgerufen? –

Antwort

1

Mit Lehre Methoden das Ergebnis holen können, die Sie benötigen:

$productRepository = $em->getRepository('SystemBundle:Product'); 
$oProduct = $productRepository->findBy(array('company' => $cid)); 

$oCompany = $oProduct->getCompany(); 

$result = array(
    'units' => $oCompany->getUnits(), 
    'timestamp' => $oCompany->getTimestamp(), 
    'price' => $oProduct->getPrice(), 
); 

$response = new JsonResponse(); 
$response->setData($result); 

return $response;