Postgresql PommBundle类型和请求

Postgresql PommBundle类型和请求,postgresql,symfony,orm,project,pomm,Postgresql,Symfony,Orm,Project,Pomm,我有个问题要问symfony的Pommbundle 在我的pgsqlServer中,我有一个货币类型 poombundle映射的等价项是什么? 可以给我一个pommundle中定义的类型行的文档吗 如果我想在sql中使用agregat函数(min,sum),可以使用投影吗?或者我可以使用这种方法: $sql ="select min("Tarif"."MontantTTC") as "Prix", "Article"."SousFamille" as "ID" fr

我有个问题要问symfony的Pommbundle

在我的pgsqlServer中,我有一个货币类型 poombundle映射的等价项是什么? 可以给我一个pommundle中定义的类型行的文档吗

如果我想在sql中使用agregat函数(min,sum),可以使用投影吗?或者我可以使用这种方法:

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

Pomm中没有转换器,因为不鼓励使用货币类型,不应在新开发中使用,请参阅以获取更多解释。它在Postgres中的支持是由于向后兼容的原因。应改用数字或整数(如有可能,以美分为单位)

如果由于使用此类型的现有数据库而没有选择,则可以编写自己的转换器(请参阅)注意输出取决于环境变量
lc\u monetary
。这可以在项目的会话生成器中以相同的方式设置

也就是说,您应该避免在列和表名中使用大写字母,这会破坏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);
}
函数getMinPriceFor(数组$families):CollectionIterator { $sql=$projection->formatFieldsWithFieldAlias('a'), “{condition}”=>$condition, ]); 返回$this->query($sql,$condition->getValues(),$projection); }