@@ -98,6 +98,11 @@ public function newBelongsToMany($model, $foreignKey = null, $localKey = null)
9898 return $ model ->newQuery ();
9999 }
100100
101+ /**
102+ * Returns list of query of relations
103+ *
104+ * @return array<string, QueryBuilder>
105+ */
101106 public function getRelations ()
102107 {
103108 return $ this ->_relations ;
@@ -146,21 +151,13 @@ private function retrieveRelateData(QueryBuilder $query)
146151 . $ parentQuery ->select ($ relationKey ['localKey ' ])->prepare ()
147152 . ') AS subquery ) '
148153 );
149- if ($ relationQuery ->getModel ()->getRelateAs () == 'oneToOne ' ) {
150- $ relatedModels = $ relationQuery ->first ();
151- } else {
152- $ relatedModels = $ relationQuery ->get ();
153- }
154+
155+ $ relatedModels = $ relationQuery ->get ();
154156
155157 if ($ relatedModels ) {
156- if ($ relatedModels instanceof Model) {
157- $ this ->_relatedData [$ relationName ][$ relatedModels ->getAttribute ($ relationKey ['foreignKey ' ])]
158- = $ relatedModels ;
159- } else {
160- foreach ($ relatedModels as $ relatedModel ) {
161- $ this ->_relatedData [$ relationName ][$ relatedModel ->getAttribute ($ relationKey ['foreignKey ' ])][]
162- = $ relatedModel ;
163- }
158+ foreach ($ relatedModels as $ relatedModel ) {
159+ $ this ->_relatedData [$ relationName ][$ relatedModel ->getAttribute ($ relationKey ['foreignKey ' ])][]
160+ = $ relatedModel ;
164161 }
165162 }
166163 }
@@ -178,6 +175,11 @@ private function setRelatedData(Model $model)
178175 $ data = isset (
179176 $ this ->_relatedData [$ relationName ][$ model ->getAttribute ($ relationKey ['localKey ' ])]
180177 ) ? $ this ->_relatedData [$ relationName ][$ model ->getAttribute ($ relationKey ['localKey ' ])] : null ;
178+
179+ if ($ relationQuery ->getModel ()->getRelateAs () === 'oneToOne ' && is_countable ($ data ) && \count ($ data )) {
180+ $ data = $ data [0 ];
181+ }
182+
181183 $ model ->setAttribute ($ relationName , $ data );
182184 }
183185 }
0 commit comments