Skip to content

Commit f5fba9c

Browse files
authored
[12.x] Address Model@relationLoaded when relation is null (#55531)
* address when relation is null * added tests and return false when $relatedModels is empty
1 parent 44e6a29 commit f5fba9c

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php

+5-1
Original file line numberDiff line numberDiff line change
@@ -1088,7 +1088,11 @@ public function relationLoaded($key)
10881088
if ($nestedRelation !== null) {
10891089
$relatedModels = is_iterable($relatedModels = $this->$relation)
10901090
? $relatedModels
1091-
: [$relatedModels];
1091+
: array_filter([$relatedModels]);
1092+
1093+
if (count($relatedModels) === 0) {
1094+
return false;
1095+
}
10921096

10931097
foreach ($relatedModels as $related) {
10941098
if (! $related->relationLoaded($nestedRelation)) {

tests/Integration/Database/EloquentModelRelationLoadedTest.php

+15
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,21 @@ public function testWhenParentRelationIsASingleInstance()
135135
$this->assertTrue($model->relationLoaded('two.one'));
136136
$this->assertTrue($model->two->one->is($one));
137137
}
138+
139+
public function testWhenRelationIsNull()
140+
{
141+
$one = One::query()->create();
142+
$two = $one->twos()->create();
143+
$three = $two->threes()->create();
144+
145+
$model = Three::query()
146+
->with('one.twos')
147+
->find($three->id);
148+
149+
$this->assertTrue($model->relationLoaded('one'));
150+
$this->assertNull($model->one);
151+
$this->assertFalse($model->relationLoaded('one.twos'));
152+
}
138153
}
139154

140155
class One extends Model

0 commit comments

Comments
 (0)