- Still WIP on removing annotations
This commit is contained in:
1 parent
62792e8325
commit
d9fa51fa18
5 files changed
+28
-16
No files matched your search
+13
-10
@@ -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 {}
|
||||
|
||||
Reference in new issue
Block a user