From 1e4a528d3903997e1025f0b682270685da72d594 Mon Sep 17 00:00:00 2001 From: Dave Mc Nicoll Date: Mon, 15 Jun 2026 19:58:46 +0000 Subject: [PATCH] - Merged --- src/EntityTrait.php | 2 +- src/Repository.php | 12 ++++++------ src/Repository/RelationBuilder.php | 1 - .../SearchRequestFromRequestTrait.php | 17 ++++++++--------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/EntityTrait.php b/src/EntityTrait.php index f3195bd..491c46e 100644 --- a/src/EntityTrait.php +++ b/src/EntityTrait.php @@ -317,7 +317,7 @@ trait EntityTrait { $alias = $alias ? Ulmus::repository(static::class)->adapter->adapter()->escapeIdentifier($alias, Adapter\AdapterInterface::IDENTIFIER_FIELD) : $default; return new EntityField( - entityClass: static::class, name: $name, alias: $alias, entityResolver: Ulmus::resolveEntity(static::class), select: $select + name: $name, entityClass: static::class, alias: $alias, entityResolver: Ulmus::resolveEntity(static::class), select: $select ); } diff --git a/src/Repository.php b/src/Repository.php index 07da296..420de9e 100644 --- a/src/Repository.php +++ b/src/Repository.php @@ -23,7 +23,7 @@ class Repository implements RepositoryInterface public array $events = []; - public ? ConnectionAdapter $adapters; + public ? ConnectionAdapter $adapter; public readonly QueryBuilder\QueryBuilderInterface $queryBuilder; @@ -31,7 +31,8 @@ class Repository implements RepositoryInterface protected array $joined = []; - public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, ?ConnectionAdapter $adapter = null) { + public function __construct(string $entity, string $alias = self::DEFAULT_ALIAS, null|ConnectionAdapter $adapter = null) { + $this->entityClass = $entity; $this->alias = $alias; $this->entityResolver = Ulmus::resolveEntity($entity); @@ -465,8 +466,8 @@ class Repository implements RepositoryInterface foreach(array_filter($fields, fn($e) => $e && ! isset($this->joined[$e]) ) as $item) { $this->joined[$item] = true; - $attribute = $this->entityResolver->searchFieldAnnotation($item, [ Join::class ]) ?: - $this->entityResolver->searchFieldAnnotation($item, [ Relation::class ]); + $attribute = clone ($this->entityResolver->searchFieldAnnotation($item, [ Join::class ]) ?: + $this->entityResolver->searchFieldAnnotation($item, [ Relation::class ])); $isRelation = $attribute instanceof Relation; @@ -476,8 +477,7 @@ class Repository implements RepositoryInterface if ( $attribute ) { $alias = $attribute->alias ?? $item; - - $entity = $attribute->entity ?? $this->entityResolver->reflectedClass->getProperties(true)[$item]->getTypes()[0]->type; + $entity = $attribute->entity ?? $this->entityResolver->getPropertyEntityType($item); foreach($entity::resolveEntity()->fieldList(Common\EntityResolver::KEY_COLUMN_NAME, true) as $key => $field) { if ( null === $entity::resolveEntity()->searchFieldAnnotation($field->name, [ Relation\Ignore::class ]) ) { diff --git a/src/Repository/RelationBuilder.php b/src/Repository/RelationBuilder.php index 50d7001..8bfd50c 100644 --- a/src/Repository/RelationBuilder.php +++ b/src/Repository/RelationBuilder.php @@ -207,7 +207,6 @@ class RelationBuilder return new $class(); } - protected function instanciateEmptyObject(string $name, Relation|Join $relation) : object { switch( true ) { diff --git a/src/SearchRequest/SearchRequestFromRequestTrait.php b/src/SearchRequest/SearchRequestFromRequestTrait.php index 5af57cc..08871d4 100644 --- a/src/SearchRequest/SearchRequestFromRequestTrait.php +++ b/src/SearchRequest/SearchRequestFromRequestTrait.php @@ -169,6 +169,14 @@ trait SearchRequestFromRequestTrait $this->parseAttributeGroupBy($attribute, $field, $propertyName); break; + case $attribute instanceof SearchOrderBy: + if ($value !== null) { + $this->$propertyName = $value; + } + + $this->parseAttributeOrderBy($attribute, $field, $propertyName); + break; + case $attribute instanceof SearchWhere: case $attribute instanceof SearchLike: case $attribute instanceof SearchManual: @@ -198,14 +206,6 @@ trait SearchRequestFromRequestTrait $this->parseAttributeMethod($attribute, $field, $propertyName); break; - - case $attribute instanceof SearchOrderBy: - if ($value !== null) { - $this->$propertyName = $value; - } - - $this->parseAttributeOrderBy($attribute, $field, $propertyName); - break; } } } @@ -291,7 +291,6 @@ trait SearchRequestFromRequestTrait if (! isset($this->$propertyName)) { return; } - switch ($attribute->method) { case SearchMethodEnum::Like: case SearchMethodEnum::LikeLeft: