0

私のプロジェクトには古いバージョン (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という名前を取得します(CityとHouseの間に正しく関係があります)例:

city       | count
New York   | 2
Paris      | 4
Washington | 3

しかし、Propel でこのクエリを使用することはできません。

4

1 に答える 1

1

symfonyの古いスニペットに素晴らしい例があります。

試す:

$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 ...
}
于 2012-07-17T15:20:22.013 に答える