Select Propel 中仅计算列
Select only calculated columns in Propel
我正在尝试使用 Propel 执行 selection,其中 returns 仅计算列,但我总是有其他列 selected.
例如:
$criteria = new MuestraQuery();
$criteria->clearSelectColumns()
->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
结果查询:
SELECT muestra.sal_id, muestra.sal_regimen,
-- ...
-- (ALL FIELDS OF THE TABLE HERE...)
-- ...
count(distinct muestra.sal_espesor) AS numEspesores
FROM muestra
我已经能够减少 selected 字段的数量,仅包括一个字段。比如这个查询returns只有两个字段:
$criteria = new MuestraQuery();
$criteria->clearSelectColumns()
->select(MuestraTableMap::COL_SAL_ID)
->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
结果查询:
SELECT count(distinct muestra.sal_espesor) AS numEspesores,
muestra.sal_id AS "muestra.sal_id"
FROM muestra
¿在 Propel 中有没有办法只 select 计算列?
我看到在 ModelCriteria->doSelect()
中添加了基于受保护的 ModelCriteria->isSelfSelected
属性 的列,这是在 ModelCriteria->select()
中设置的,而不是在 addAsColumn()
中设置的,因为它来自 Criteria,并且未在 ModelCriteria 中被覆盖。
不知道这是一个错误还是我做错了什么。
只是 select 您添加的计算列。
MuestraQuery::create()
->select(['numEspesores'])
->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
->find();
由于 Propel 的流畅 api,您不必在 addAsColumn
方法之前调用 select
方法,因此您甚至可以执行以下操作:
MuestraQuery::create()
->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
->select(['numEsesores'])
->find();
我正在尝试使用 Propel 执行 selection,其中 returns 仅计算列,但我总是有其他列 selected.
例如:
$criteria = new MuestraQuery();
$criteria->clearSelectColumns()
->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
结果查询:
SELECT muestra.sal_id, muestra.sal_regimen,
-- ...
-- (ALL FIELDS OF THE TABLE HERE...)
-- ...
count(distinct muestra.sal_espesor) AS numEspesores
FROM muestra
我已经能够减少 selected 字段的数量,仅包括一个字段。比如这个查询returns只有两个字段:
$criteria = new MuestraQuery();
$criteria->clearSelectColumns()
->select(MuestraTableMap::COL_SAL_ID)
->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
结果查询:
SELECT count(distinct muestra.sal_espesor) AS numEspesores,
muestra.sal_id AS "muestra.sal_id"
FROM muestra
¿在 Propel 中有没有办法只 select 计算列?
我看到在 ModelCriteria->doSelect()
中添加了基于受保护的 ModelCriteria->isSelfSelected
属性 的列,这是在 ModelCriteria->select()
中设置的,而不是在 addAsColumn()
中设置的,因为它来自 Criteria,并且未在 ModelCriteria 中被覆盖。
不知道这是一个错误还是我做错了什么。
只是 select 您添加的计算列。
MuestraQuery::create()
->select(['numEspesores'])
->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
->find();
由于 Propel 的流畅 api,您不必在 addAsColumn
方法之前调用 select
方法,因此您甚至可以执行以下操作:
MuestraQuery::create()
->addAsColumn('numEspesores', 'count(distinct muestra.sal_espesor)')
->select(['numEsesores'])
->find();