Compare commits

..

No commits in common. "d4a9fc84634a7b4410d908a738b0594101c7851b" and "dcccce78932a8804f48db5b01c61c541ac0caeda" have entirely different histories.

4 changed files with 8 additions and 24 deletions

View File

@ -7,7 +7,7 @@ use Ulmus\Attribute\Attribute;
#[\Attribute(\Attribute::TARGET_PROPERTY)]
class Relation {
public function __construct(
public Relation\RelationTypeEnum|string $type,
public string $type,
public \Stringable|string|array $key = "",
public null|\Closure $generateKey = null,
public null|\Stringable|string|array $foreignKey = null,
@ -29,6 +29,7 @@ class Relation {
$this->bridgeField = Attribute::handleArrayField($this->bridgeField);
$this->bridgeForeignKey = Attribute::handleArrayField($this->bridgeForeignKey);
$this->field = Attribute::handleArrayField($this->field);
}
public function entity() {
@ -54,17 +55,17 @@ class Relation {
public function isOneToOne() : bool
{
return $this->type === Relation\RelationTypeEnum::oneToOne || $this->normalizeType() === 'onetoone';
return $this->normalizeType() === 'onetoone';
}
public function isOneToMany() : bool
{
return $this->type === Relation\RelationTypeEnum::oneToMany || $this->normalizeType() === 'onetomany';
return $this->normalizeType() === 'onetomany';
}
public function isManyToMany() : bool
{
return $this->type === Relation\RelationTypeEnum::manyToMany || $this->normalizeType() === 'manytomany';
return $this->normalizeType() === 'manytomany';
}
public function function() : string

View File

@ -1,10 +0,0 @@
<?php
namespace Ulmus\Attribute\Property\Relation;
enum RelationTypeEnum
{
case oneToOne;
case oneToMany;
case manyToMany;
}

View File

@ -12,12 +12,7 @@ class Where {
public mixed $value = null,
public string $operator = Query\Where::OPERATOR_EQUAL,
public string $condition = Query\Where::CONDITION_AND,
public null|\Stringable|array $foreignField = null,
) {
$this->field = Attribute::handleArrayField($field);
if ($foreignField) {
$this->value = Attribute::handleArrayField($foreignField);
}
}
}

View File

@ -628,11 +628,9 @@ class Repository
$this->having(is_object($condition->field) ? $condition->field : $entity::field($condition->field), $condition->value, $condition->operator);
}
if ( empty($this->entityResolver->searchFieldAnnotationList($item, [ Attribute\Property\FilterJoin::class, FilterJoin::class ])) ) {
foreach($this->entityResolver->searchFieldAnnotationList($item, [ Attribute\Property\Filter::class, Filter::class ] ) as $filter) {
call_user_func_array([ $this->entityClass, $filter->method ], [ $this, $item, true ]);
}
}
$this->close();
@ -702,7 +700,7 @@ class Repository
$repository = $entity::repository()->selectJsonEntity($entity, $alias)->open();
}
# @TODO ? $relation->isManyToMany() and $repository->selectJsonEntity($relation->bridge, $relation->bridgeField, true);
# $relation->isManyToMany() and $repository->selectJsonEntity($relation->bridge, $relation->bridgeField, true);
foreach($this->entityResolver->searchFieldAnnotationList($item, [ Attribute\Property\Where::class, Where::class ]) as $condition) {
$repository->where(is_object($condition->field) ? $condition->field : $entity::field($condition->field), $condition->value, $condition->operator);