Php 仅选择“推进”中的计算列

Php 仅选择“推进”中的计算列,php,propel,propel2,Php,Propel,Propel2,我正在尝试使用Propel执行一个选择,它只返回计算列,但我总是选择其他列 例如: $criteria=新查询; $criteria->clearSelectColumns ->添加“numEspesores”列、“countdistinct muestra.sal_espesor” 结果查询: 选择muestra.sal_id,muestra.sal_id, - ... -这里的表的所有字段。。。 - ... 将muestra.sal_espesor列为努梅斯佩索雷斯 来自穆埃斯特拉 我已经能

我正在尝试使用Propel执行一个选择,它只返回计算列,但我总是选择其他列

例如:

$criteria=新查询; $criteria->clearSelectColumns ->添加“numEspesores”列、“countdistinct muestra.sal_espesor” 结果查询:

选择muestra.sal_id,muestra.sal_id, - ... -这里的表的所有字段。。。 - ... 将muestra.sal_espesor列为努梅斯佩索雷斯 来自穆埃斯特拉 我已经能够减少所选字段的数量,只包括一个字段。例如,此查询仅返回两个字段:

$criteria=新查询; $criteria->clearSelectColumns ->选择muestatablemap::COL\u SAL\u ID ->添加“numEspesores”列、“countdistinct muestra.sal_espesor” 结果查询:

选择countdistinct muestra.sal_espesor作为numEspesores, muestra.sal_id作为muestra.sal_id 来自穆埃斯特拉 ?在“推进”中是否有只选择计算列的方法

我看到在ModelCriteria->doSelect中根据受保护的ModelCriteria->isSelfSelected属性添加了列,该属性在ModelCriteria->select中设置,但不在addAsColumn中,因为它来自Criteria,并且在ModelCriteria中未被覆盖


不知道这是错误还是我做得不好。

只需选择您添加的计算列即可

MuestraQuery::create()
    ->select(['numEspesores'])
    ->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
    ->find();
由于Propel的fluent api,您不必在addAsColumn方法之前调用select方法,因此您甚至可以执行以下操作:

MuestraQuery::create()
    ->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
    ->select(['numEsesores'])
    ->find();