@@ -114,22 +114,35 @@ private function fetchViewAttr(string $field, array $data)
114
114
// 获取主模型数据(支持获取器)
115
115
$ value = $ model ->$ field ;
116
116
} 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 );
129
141
}
142
+ break ;
130
143
}
131
144
}
132
- return $ value ;
145
+ return $ value ?? null ;
133
146
}
134
147
135
148
/**
0 commit comments