我的项目旧版本(1.2)Propel。我想查询:
SELECT city_id, COUNT(*) FROM House GROUP BY city_id
我试过了:
$c = new Criteria;
$c->addAsColumn('count', 'Count(' . HousePeer::CITY_ID . ')');
$this->results = HousePeer::doSelect($c);
但这不起作用 - 只返回数据库中的第一条记录,没有计数等。
我也试过了:
$con = Propel::getConnection();
$sql = "SELECT city_id, COUNT(*) FROM House GROUP BY city_id";
$stmt = $con->createStatement();
$rs = $stmt->executeQuery($sql, ResultSet::FETCHMODE_NUM);
$this->results = HousePeer::populateObjects($rs);
但这让我感动
Error populating House object [wrapped: Invalid resultset column: 3]
我希望只收到与SQL表中相同的内容:
city_id | count
1 | 2
2 | 4
3 | 3
等
或从CityPeer获取城市名称(我和城市和众议院之间的关系正确) 例如:
city | count
New York | 2
Paris | 4
Washington | 3
但我无法在Propel中使用此查询。
答案 0 :(得分:1)
您在symfony的旧代码段中有a great example。
尝试:
$c = new Criteria;
$c->clearSelectColumns()->addSelectColumn(HousePeer::CITY_ID);
$c->addGroupByColumn(HousePeer::CITY_ID);
$c->addAsColumn('numCity', 'COUNT('.HousePeer::CITY_ID.')');
$c->addJoin(HousePeer::CITY_ID, CityPeer::ID);
$rs = HousePeer::doSelectRS($c);
while ($rs->next())
{
// etc ...
}