2017-07-11 6 views
0

は、私は私がお金の種類 poombundleマッピングのequivantは何かを持っている私のpgsqlServerで PommBundleタイプと要求

のsymfony

ためPommbundleについて質問がありますか? pommbundleで定義されているタイプ行のドキュメントを私に渡すことは可能ですか?

私はsql(min、sum)でagregat関数を使用したいのですが、投影法を使用できますか?または私はこの方法で使用することができます:

$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 
     "; 

答えて

0

をお金の種類は落胆していると、新しい開発で使用すべきではありませんので、Pommには、コンバータはありませんが、より多くの説明についてはthis threadを参照してください。 Postgresでのそのサポートは、下位互換性の理由から残されています。代わりに、数値または整数(可能であればセント)を使用する必要があります。

このタイプの既存のデータベースを使用するために選択肢がない場合は、独自のコンバータを作成できます(ConverterInterfaceを参照してください)this type出力はlc_monetary環境変数に依存します。これは、プロジェクトのセッションビルダーでdate format is setと同じ方法で設定できます。

これは、カラム&のテーブル名に大文字を使用しないでください。これは、PHPクラスによるマッピングが廃止されたためです。

ハイドレーションシステムが値を変換する方法を知っているように、モデルマネージャで投影を使用する必要があります。

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); 
} 
関連する問題