- Completed merge
This commit is contained in:
1 parent
430cd03bc4
commit
00ebf3381f
10 files changed
+93
-34
No files matched your search
+15
-17
@@ -692,8 +692,6 @@ class Repository
|
||||
{
|
||||
foreach ((array)$fields as $name) {
|
||||
if (null !== ($relation = $this->entityResolver->searchFieldAnnotation($name, new Annotation\Property\Relation()))) {
|
||||
$relationType = strtolower(str_replace(['-', '_', ' '], '', $relation->type));
|
||||
|
||||
$order = $this->entityResolver->searchFieldAnnotationList($name, new Annotation\Property\OrderBy());
|
||||
$where = $this->entityResolver->searchFieldAnnotationList($name, new Annotation\Property\Where());
|
||||
|
||||
@@ -705,6 +703,12 @@ class Repository
|
||||
|
||||
$repository = $baseEntity::repository();
|
||||
|
||||
foreach ($baseEntityResolver->fieldList(Common\EntityResolver::KEY_COLUMN_NAME, true) as $key => $field) {
|
||||
if (null === $baseEntityResolver->searchFieldAnnotation($field['name'], new RelationIgnore)) {
|
||||
$repository->select($baseEntityResolver->entityClass::field($key));
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($where as $condition) {
|
||||
$repository->where($condition->field, is_callable($condition->value) ? call_user_func_array($condition->value, [$this]) : $condition->value, $condition->operator, $condition->condition);
|
||||
}
|
||||
@@ -725,22 +729,16 @@ class Repository
|
||||
|
||||
$repository->where($key, $values);
|
||||
|
||||
switch ($relationType) {
|
||||
case 'onetoone':
|
||||
$results = call_user_func([$repository, "loadOne"]);
|
||||
$item->$name = $results ?: new $baseEntity();
|
||||
$results = call_user_func([ $repository, $relation->function() ]);
|
||||
|
||||
break;
|
||||
|
||||
case 'onetomany':
|
||||
$results = call_user_func([$repository, $relation->function]);
|
||||
|
||||
foreach ($collection as $item) {
|
||||
$item->$name = $baseEntity::entityCollection();
|
||||
$item->$name->mergeWith($results->filtersCollection(fn($e) => $e->$property === $item->$entityProperty));
|
||||
}
|
||||
|
||||
break;
|
||||
if ($relation->isOneToOne()) {
|
||||
$item->$name = $results ?: new $baseEntity();
|
||||
}
|
||||
elseif ($relation->isOneToMany()) {
|
||||
foreach ($collection as $item) {
|
||||
$item->$name = $baseEntity::entityCollection();
|
||||
$item->$name->mergeWith($results->filtersCollection(fn($e) => $e->$property === $item->$entityProperty));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user