diff --git a/src/Model/ModelRelationManager.php b/src/Model/ModelRelationManager.php index 93ece638a5c09a6c1b21bacc4f3415f3b17ca67f..cbab53f8d9f500e6cab576a73efc2e3aa78551f2 100644 --- a/src/Model/ModelRelationManager.php +++ b/src/Model/ModelRelationManager.php @@ -343,13 +343,13 @@ class ModelRelationManager { $query->field(...$subAnnotation->fields); } - if ($annotation->withFields) + if ($subAnnotation->withFields) { - $query->withField(...$annotation->withFields); + $query->withField(...$subAnnotation->withFields); } if (isset($withFields[$propertyName])) { - $withFields[$propertyName]($query, $annotation); + $withFields[$propertyName]($query, $subAnnotation); } foreach ($query->select()->getArray() as $resultModel) { @@ -364,6 +364,8 @@ class ModelRelationManager { foreach ($item['list'] as $subItem) { + /** @var PolymorphicToMany $subAnnotation */ + $subAnnotation = $subItem['annotation']; $rightTable = $subItem['rightTable']; $middleTable = $subItem['middleTable']; $middleLeftField = $subItem['middleLeftField']; @@ -378,23 +380,23 @@ class ModelRelationManager $query = $rightModel::query($modelClass::__getMeta()->getDbPoolName()) ->field(...$queryFields) ->join($middleTable, $middleTable . '.' . $middleLeftField, '=', $rightTable . '.' . $rightField) - ->where($middleTable . '.' . $annotation->type, '=', $annotation->typeValue) + ->where($middleTable . '.' . $subAnnotation->type, '=', $subAnnotation->typeValue) ->where($middleTable . '.' . $middleRightField, 'in', $ids); - if ($annotation->withFields) + if ($subAnnotation->withFields) { - $query->withField(...$annotation->withFields); + $query->withField(...$subAnnotation->withFields); } - if ($annotation->order) + if ($subAnnotation->order) { - $query->orderRaw($annotation->order); + $query->orderRaw($subAnnotation->order); } - if (null !== $annotation->limit) + if (null !== $subAnnotation->limit) { - $query->limit($annotation->limit); + $query->limit($subAnnotation->limit); } if (isset($withFields[$propertyName])) { - $withFields[$propertyName]($query, $annotation); + $withFields[$propertyName]($query, $subAnnotation); } $list = $query->select() ->getArray();