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
+
0
-

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
+
0
-

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.

Pavel Janda
Člen | 977
+
+1
-

Fixed in new release https://github.com/…s/tag/v5.3.0