- Reworked the removeQueryFragment.
This commit is contained in:
mcndave committed 2021-03-01 16:31:26 +00:00
commit 71de0a8ac1
2 files changed
+21 -9

No files matched your search

+19 -8
View File
@@ -63,9 +63,7 @@ class Repository
public function count() : int
{
if ( null !== $select = $this->queryBuilder->getFragment(Query\Select::class) ) {
$this->queryBuilder->removeFragment($select);
}
$this->removeQueryFragment($this->queryBuilder->getFragment(Query\Select::class));
if ( $this->queryBuilder->getFragment(Query\GroupBy::class) ) {
$this->select( "DISTINCT COUNT(*) OVER ()" );
@@ -271,17 +269,22 @@ class Repository
}
}
public function removeQueryFragment(? Query\Fragment $fragment) : self
{
$fragment && $this->queryBuilder->removeFragment($fragment);
return $this;
}
public function selectEntity(string $entity, string $alias, string $prependField = "") : self
{
$prependField and ( $prependField .= "$" );
$prependField and ($prependField .= "$");
foreach($entity::resolveEntity()->fieldList(Common\EntityResolver::KEY_COLUMN_NAME, true) as $key => $field) {
if ( null === $entity::resolveEntity()->searchFieldAnnotation($field['name'], new RelationIgnore) ) {
foreach ($entity::resolveEntity()->fieldList(Common\EntityResolver::KEY_COLUMN_NAME, true) as $key => $field) {
if (null === $entity::resolveEntity()->searchFieldAnnotation($field['name'], new RelationIgnore)) {
$this->select("$alias.$key as {$prependField}{$field['name']}");
}
}
return $this;
}
public function selectJsonEntity(string $entity, string $alias, bool $skipFrom = false) : self
@@ -311,6 +314,14 @@ class Repository
return $this;
}
public function distinct(/*array|Stringable*/ $fields) : self
{
$this->queryBuilder->select($fields);
$this->queryBuilder->getFragment(Query\Select::class)->distinct = true;
return $this;
}
public function insert(array $fieldlist, string $table, string $alias, ? string $schema) : self
{
$this->queryBuilder->insert($fieldlist, $this->escapeTable($table), $alias, $this->escapedDatabase(), $schema);