| | 258 | * Propel impersonating doCount ^^ |
|---|
| | 259 | */ |
|---|
| | 260 | public function doCount(Criteria $criteria, $distinct = false, $con=null) |
|---|
| | 261 | { |
|---|
| | 262 | $criteria = clone $criteria; |
|---|
| | 263 | $asColumns = $criteria->getAsColumns(); |
|---|
| | 264 | $criteria->clearSelectColumns()->clearOrderByColumns(); |
|---|
| | 265 | |
|---|
| | 266 | // hack against criteria private policy |
|---|
| | 267 | foreach ($asColumns as $key => $value) |
|---|
| | 268 | { |
|---|
| | 269 | $criteria->addAsColumn($key, $value); |
|---|
| | 270 | } |
|---|
| | 271 | |
|---|
| | 272 | $peerClass = get_class($this->objects[0]).'Peer'; |
|---|
| | 273 | |
|---|
| | 274 | if ($distinct || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) |
|---|
| | 275 | { |
|---|
| | 276 | $criteria->addSelectColumn(constant($peerClass.'::COUNT_DISTINCT')); |
|---|
| | 277 | } |
|---|
| | 278 | else |
|---|
| | 279 | { |
|---|
| | 280 | $criteria->addSelectColumn(constant($peerClass.'::COUNT')); |
|---|
| | 281 | } |
|---|
| | 282 | |
|---|
| | 283 | foreach($criteria->getGroupByColumns() as $column) |
|---|
| | 284 | { |
|---|
| | 285 | $criteria->addSelectColumn($column); |
|---|
| | 286 | } |
|---|
| | 287 | |
|---|
| | 288 | $rs = call_user_func(array($peerClass, 'doSelectRS'), $criteria, $con); |
|---|
| | 289 | |
|---|
| | 290 | if ($rs->next()) |
|---|
| | 291 | { |
|---|
| | 292 | return $rs->getInt(1); |
|---|
| | 293 | } |
|---|
| | 294 | else |
|---|
| | 295 | { |
|---|
| | 296 | return 0; |
|---|
| | 297 | } |
|---|
| | 298 | } |
|---|
| | 299 | |
|---|
| | 300 | /** |
|---|