2017-07-11 4 views
0

Ich habe eine Frage zu Pommbundle für symfonyPommBundle Art und Anforderung

In meinem pgsqlServer ich habe eine Geld-Typ Was ist die equivant für poombundle Mapping? Es ist möglich, mir ein Dokument für eine Typreihe zu geben, die im Pommbundle definiert ist?

Wenn ich eine Agregat-Funktion in sql (min, Summe) verwenden möchte, ist es möglich, eine Projektion zu verwenden? oder kann ich diese Methode verwenden:

$sql ="select 
     min("Tarif"."MontantTTC") as "Prix", "Article"."SousFamille" as "ID" 
     from "Tarif" 
     inner join "Article" ON "Tarif"."ID" = "Article"."Tarif" 
     where 
      "Article"."SousFamille" IN (?,?,?,?,?) Group by "Article"."SousFamille" order by "Article"."SousFamille" ASC 
     "; 

Antwort

0

Es gibt keine Konverter in Pomm sind, weil das Geld Typ wird abgeraten und sollte nicht in neue Entwicklungen verwendet werden, siehe this thread für weitere Erklärungen. Die Unterstützung von Postgres wird aus Gründen der Rückwärtskompatibilität beibehalten. Numerisch oder Integer (in Cent, wenn möglich) sollte stattdessen verwendet werden.

Wenn Sie keine andere Wahl haben, da eine vorhandene Datenbank mit dieser Art verwenden, können Sie Ihren eigenen Konverter (siehe ConverterInterface) schreiben Beachten Sie, this type Ausgang der variablen lc_monetary Umgebung abhängt. Dies könnte auf die gleiche Weise date format is set im Sessionbuilder Ihres Projekts eingestellt werden.

Dies zu vermeiden, sollten Sie vermeiden, Großbuchstaben in Ihrer Spalte & Tabellennamen verwenden, dies ruiniert die Zuordnung mit PHP-Klassen.

Sie müssen eine Projektion im Modellmanager verwenden, damit das Trinksystem weiß, wie die Werte zurückkonvertiert werden.

function getMinPriceFor(array $families): CollectionIterator 
{ 
    $sql = <<<SQL 
SELECT {projection} 
FROM "Article" a 
    INNER JOIN "Tarif" t ON t."ID" = a."Tarif" 
WHERE {condition} 
GROUP BY a."SousFamille" 
ORDER BY a."SousFamille" ASC 
SQL; 

    $projection = $this->createProjection() 
     ->setField('prix', 'min(t."MontantTTC")', 'numeric'); 
    $condition = Where::createWhereIn('a."SousFamille"', $families); 
    $sql = strtr(
     $sql, 
     [ 
      '{projection}' => $projection->formatFieldsWithFieldAlias('a'), 
      '{condition}' => $condition, 
     ]); 

    return $this->query($sql, $condition->getValues(), $projection); 
} 
Verwandte Themen