@@ -114,22 +114,35 @@ private function fetchViewAttr(string $field, array $data)
114114 // 获取主模型数据(支持获取器)
115115 $ value = $ model ->$ field ;
116116 } else {
117- // 获取关联模型数据
118- $ mapping = $ this ->getOption ('viewMapping ' , []);
119- $ relations = $ this ->getOption ('autoMapping ' , []);
120- $ value = null ;
121- foreach ($ relations as $ relation ) {
122- if (isset ($ data [$ relation ]) && $ model ->$ relation ->hasData ($ field )) {
123- $ value = $ model ->$ relation ->$ field ;
124- if (!isset ($ mapping [$ field ])) {
125- $ mapping [$ field ] = $ relation . '-> ' . $ field ;
126- $ this ->setOption ('viewMapping ' , $ mapping );
127- }
128- break ;
117+ // 获取自动映射的属性数据
118+ $ value = $ this ->getAutoRelationValue ($ field , $ data );
119+ }
120+ return $ value ;
121+ }
122+
123+ /**
124+ * 获取autoMapping自动映射的视图属性值.
125+ *
126+ * @param string $field 视图属性
127+ * @param array $data 模型数据
128+ *
129+ * @return mixed
130+ */
131+ private function getAutoRelationValue (string $ field , array $ data )
132+ {
133+ $ mapping = $ this ->getOption ('viewMapping ' , []);
134+ $ relations = $ this ->getOption ('autoMapping ' , []);
135+ foreach ($ relations as $ relation ) {
136+ if (isset ($ data [$ relation ]) && $ this ->model ()->$ relation ->hasData ($ field )) {
137+ $ value = $ this ->model ()->$ relation ->$ field ;
138+ if (!isset ($ mapping [$ field ])) {
139+ $ mapping [$ field ] = $ relation . '-> ' . $ field ;
140+ $ this ->setOption ('viewMapping ' , $ mapping );
129141 }
142+ break ;
130143 }
131144 }
132- return $ value ;
145+ return $ value ?? null ;
133146 }
134147
135148 /**
0 commit comments