diff --git a/Annotation/Annotation.php b/Annotation/Annotation.php index ec5aa8b9..19d477e2 100644 --- a/Annotation/Annotation.php +++ b/Annotation/Annotation.php @@ -81,6 +81,16 @@ class Annotation extends Component } + /** + * @param string $class + * @return array + */ + public function getRelateMethods(string $class): array + { + return $this->_model_relate[$class] ?? []; + } + + /** * @param string $class diff --git a/Database/Base/BaseActiveRecord.php b/Database/Base/BaseActiveRecord.php index d7e1c532..0efc7a34 100644 --- a/Database/Base/BaseActiveRecord.php +++ b/Database/Base/BaseActiveRecord.php @@ -732,10 +732,10 @@ abstract class BaseActiveRecord extends Component implements IOrm, ArrayAccess */ public function getRelate($name): mixed { - if (!isset($this->_relate[$name])) { - return NULL; + if (empty($this->_relate[$name])) { + $this->_relate = Snowflake::getAnnotation()->getRelateMethods(get_called_class()); } - return $this->_relate[$name]; + return $this->_relate[$name] ?? null; }