- Still WIP on removing annotations

This commit is contained in:
mcndave committed 2023-12-04 12:36:06 -05:00
1 parent 62792e8325
commit d9fa51fa18
5 files changed
+28 -16

No files matched your search

+13 -10
View File
@@ -372,14 +372,12 @@ class Repository
public function yield() : \Generator
{
$class = $this->entityClass;
$this->selectSqlQuery();
$this->finalizeQuery();
foreach(Ulmus::iterateQueryBuilder($this->queryBuilder, $this->adapter) as $entityData) {
yield ( new $class() )->entityFillFromDataset($entityData);
yield $this->instanciateEntity()->entityFillFromDataset($entityData);
}
}
@@ -698,7 +696,7 @@ class Repository
}
}
if ( ! in_array(WithOptionEnum::SkipJoinFilter, $options) ) {
if ( ! in_array(WithOptionEnum::SkipJoinFilter, $options) ) {
foreach ($this->entityResolver->searchFieldAnnotationList($item, [Attribute\Property\FilterJoin::class, FilterJoin::class]) as $filter) {
call_user_func_array([$this->entityClass, $filter->method], [$join, $item, true]);
}
@@ -862,14 +860,17 @@ class Repository
public function collectionFromQuery(? string $entityClass = null) : EntityCollection
{
$class = $entityClass ?? $this->entityClass;
$entityClass ??= $this->entityClass;
$entityCollection = $class::entityCollection();
$entityCollection = $entityClass::entityCollection();
$this->finalizeQuery();
foreach(Ulmus::iterateQueryBuilder($this->queryBuilder, $this->adapter) as $entityData) {
$entityCollection->append( ( new $class() )->resetVirtualProperties()->entityFillFromDataset($entityData) );
$entity = $this->instanciateEntity($entityClass);
$entity->loadedFromAdapter = $this->adapter->name;
$entityCollection->append( $entity->resetVirtualProperties()->entityFillFromDataset($entityData) );
}
$this->eventExecute(Event\Repository\CollectionFromQueryInterface::class, $entityCollection);
@@ -1042,9 +1043,11 @@ class Repository
return $this->entityClass::entityCollection(...$arguments);
}
public function instanciateEntity() : object
public function instanciateEntity(? string $entityClass = null) : object
{
return new $this->entityClass();
$entityClass ??= $this->entityClass;
return new $entityClass;
}
public function hasFilters() : bool
@@ -1053,7 +1056,7 @@ class Repository
}
protected function matchEntity(object $entity) {
return get_class($entity) === $this->entityClass;
return $entity::class === $this->entityClass;
}
protected function finalizeQuery() : void {}