Postgresql PommBundle类型和请求
我有个问题要问symfony的Pommbundle 在我的pgsqlServer中,我有一个货币类型 poombundle映射的等价项是什么? 可以给我一个pommundle中定义的类型行的文档吗 如果我想在sql中使用agregat函数(min,sum),可以使用投影吗?或者我可以使用这种方法: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
$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);
}