Zly COUNT Ublaaboo/Datagrid pri NetteDatabaseTableDataSource s GROUPovanim stlpcu a COUNTom nad danym stlpcom
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- radypala
- Člen | 6
Ahojte,
robim COUNT nad tabulkou, pricom zgroupujem podla acl_user_id a z neho si urobim aj count ako usage. Len pri strankovani mi vystrankovalo pocet riadkov bez groupu
$grid->setDataSource( $this->usageModel->getTable()
->select('report_comparator_usage.acl_user_id, COUNT(*) AS usage, acl_user.*')
->joinWhere('acl_user', '1=1')
->group('acl_user_id')
->order('acl_user_id ASC') );
Original kod v Datagride „API“:https://ublaboo.org/…aSource.html#…
Moja uprava:
/**
* Get count of data
* @return int
*/
public function getCount()
{
try {
$primary = $this->data_source->getPrimary();
} catch (\LogicException $e) {
return $this->data_source->count('*');
}
$dataSourceSqlBuilder = $this->data_source->getSqlBuilder();
if($dataSourceSqlBuilder->getGroup() != '') {
return $this->data_source->count(
'DISTINCT '.$dataSourceSqlBuilder->getGroup()
);
} else {
return $this->data_source->count(
$this->data_source->getName() . '.' . (is_array($primary) ? reset($primary) : $primary)
);
}
}
Zatial funguje, ale podla mna nie je najvhodnejsia, ako by to malo byt spravne (potom pripadne by som to commitol alebo niekto iny na github)?
- temistokles
- Člen | 8
Pridal som ako pull request na https://github.com/…rid/pull/532. Navyše som doplnil podporu pre prípad, že GROUP BY obsahuje viacero stĺpcov alebo ASC/DESC.