2017-05-22 2 views
0

Ich benutze Symfony und muss mit Variablen aus meiner Datenbank namens $voorraad und $minimumvoorraad vergleichen. Ich muss das Produkt sehen, wenn $voorraad niedriger ist als $minimumvoorraad. Da ich Symfony verwende, verwenden wir die PHP-Sprache. Ich habe die FindByVoorrad und FindOneBy Aussagen ohne Erfolg versucht, ich bekomme nur den Header von meinem Zweig, aber das ist es.Symfony (php) Vergleich in FindBy Anweisung

Vielen Dank im Voraus.

+0

Könnten Sie vielleicht teilen Sie den Code, den Sie versucht haben (sowohl SQL und PHP)? – cfnerd

+0

Für den Vergleich "niedriger als" benötigen Sie einen benutzerdefinierten Code. Die beste Lösung wäre wahrscheinlich, [ein benutzerdefiniertes Repository] (http://symfony.com/doc/current/doctrine/repository.html) mit einem Abfrage-Generator (ähnlich [wie hier gezeigt] (https://stackoverflow.com) zu verwenden/a/14089458)) – kero

Antwort

1

Angesichts Ihrer Entity besteht aus unabhängig von Bereichen, einschließlich ‚voorraad‘ und ‚minimumvoorraad‘, sollten Sie Ihre Datenbanktabelle Inhalt über

$em = $this->getDoctrine()->getManager(); 
$query = $em->createQuery(
    'SELECT e 
    FROM AppBundle:Entity e 
    WHERE e.voorraad < e.minimumvoorraad' 
); 

$products = $query->getResult(); 

bearbeiten zu erhalten in der Lage: die e in der Abfrage ist Ein SQL-typischer Alias, der inline definiert wurde.

Und dann behandeln Sie Ihre $ Produkte-Variable wie gewohnt, wo Sie alle Ihre Getter und Setter verwenden können.

Nach dem Rendern und Weitergabe Ihrer Produkte auf den Zweig Ansicht

return $this->render('view.html.twig', array(
    'products' => $products 
)); 

Sie könnten dann gehen die Produkte zu drucken, zum Beispiel in einer Tabelle in Ihrem Zweig Ansicht:

<table> 
    {% for product in products %} 
     <tr> 
      <td>{{ product.id }}</td> 
      <td>{{ product.voorraad }}</td> 
      <td>{{ product.minimumvoorraad }}</td> 
     </tr> 
    {% endfor %} 
</table> 
+0

Vielen Dank, ich hatte immer noch einige Probleme, weil ich dachte, dass das e, das du in deiner Query verwendest, etwas sein musste, das bereits in deinem Code existierte, stellte sich heraus, dass es etwas zufälliges sein konnte. Noch einmal Danke! – nolivier

+0

Woops, es tut mir leid - das "e" ist ein Alias, der beim Erstellen der SQL-Abfrage der Tabelle zugewiesen wird. Das ist die MySQL-Syntax, die ich glaube. Ich hätte es erwähnen sollen, aber ich bin froh, dass Sie es selbst gemacht haben! –