Skip to content

Commit edb25e2

Browse files
committed
fix: relational data is not populating for one-to-one relation
1 parent 9e36c32 commit edb25e2

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

.gitattributes

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
.gitignore merge=ours
22
* text eol=lf
3+
34
/.vscode export-ignore
4-
lefthook.yml export-ignore
5+
lefthook.yml export-ignore
6+
.gitattributes export-ignore
7+
.gitignore export-ignore

src/Relations.php

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)