mirror of
https://github.com/Karaka-Management/phpOMS.git
synced 2026-01-11 17:58:41 +00:00
Bad implementation for count
This commit is contained in:
parent
7faae589c3
commit
db69fabcd2
|
|
@ -17,6 +17,8 @@ declare(strict_types=1);
|
|||
|
||||
namespace phpOMS\DataStorage\Database;
|
||||
|
||||
use phpOMS\Utils\StringUtils;
|
||||
|
||||
/**
|
||||
* Grammar.
|
||||
*
|
||||
|
|
@ -78,6 +80,16 @@ abstract class GrammarAbstract
|
|||
*/
|
||||
protected $tablePrefix = '';
|
||||
|
||||
/**
|
||||
* Special keywords.
|
||||
*
|
||||
* @var string
|
||||
* @since 1.0.0
|
||||
*/
|
||||
protected $specialKeywords = [
|
||||
'COUNT('
|
||||
];
|
||||
|
||||
/**
|
||||
* Compile to query.
|
||||
*
|
||||
|
|
@ -198,6 +210,16 @@ abstract class GrammarAbstract
|
|||
*/
|
||||
protected function compileSystem($system, string $prefix = '') : string
|
||||
{
|
||||
// todo: this is a bad way to handle select count(*) which doesn't need a prefix. Maybe remove prefixes in total?
|
||||
$identifier = $this->systemIdentifier;
|
||||
|
||||
foreach($this->specialKeywords as $keyword) {
|
||||
if(StringUtils::startsWith($system, $keyword)) {
|
||||
$prefix = '';
|
||||
$identifier = '';
|
||||
}
|
||||
}
|
||||
|
||||
// todo: move remaining * test also here not just if .* but also if * (should be done in else?)
|
||||
if (count($split = explode('.', $system)) == 2) {
|
||||
if ($split[1] === '*') {
|
||||
|
|
@ -208,7 +230,7 @@ abstract class GrammarAbstract
|
|||
|
||||
return $this->compileSystem($prefix . $split[0]) . '.' . $system;
|
||||
} else {
|
||||
return $this->systemIdentifier . $prefix . $system . $this->systemIdentifier;
|
||||
return $identifier . $prefix . $system . $identifier;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -752,8 +752,10 @@ class Builder extends BuilderAbstract
|
|||
* @since 1.0.0
|
||||
* @author Dennis Eichhorn <d.eichhorn@oms.com>
|
||||
*/
|
||||
public function count()
|
||||
public function count(string $table = '*')
|
||||
{
|
||||
// todo: don't do this as string, create new object new Count(); this can get handled by the grammar parser WAY better
|
||||
return $this->select('COUNT(' . $table . ')');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user