Skip to content

Commit 43e7694

Browse files
committed
Ensure createOrFirst does not return null
1 parent 4c5d4d5 commit 43e7694

File tree

5 files changed

+7
-7
lines changed

5 files changed

+7
-7
lines changed

src/Illuminate/Database/Eloquent/Builder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ public function createOrFirst(array $attributes = [], array $values = [])
582582
try {
583583
return $this->withSavepointIfNeeded(fn () => $this->create(array_merge($attributes, $values)));
584584
} catch (UniqueConstraintViolationException) {
585-
return $this->useWritePdo()->where($attributes)->first();
585+
return $this->useWritePdo()->where($attributes)->firstOrFail();
586586
}
587587
}
588588

src/Illuminate/Database/Eloquent/Relations/BelongsToMany.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -653,11 +653,11 @@ public function createOrFirst(array $attributes = [], array $values = [], array
653653
}
654654

655655
try {
656-
return tap($this->related->where($attributes)->first(), function ($instance) use ($joining, $touch) {
656+
return tap($this->related->where($attributes)->firstOrFail(), function ($instance) use ($joining, $touch) {
657657
$this->getQuery()->withSavepointIfNeeded(fn () => $this->attach($instance, $joining, $touch));
658658
});
659659
} catch (UniqueConstraintViolationException) {
660-
return (clone $this)->useWritePdo()->where($attributes)->first();
660+
return (clone $this)->useWritePdo()->where($attributes)->firstOrFail();
661661
}
662662
}
663663

src/Illuminate/Database/Eloquent/Relations/HasOneOrMany.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ public function createOrFirst(array $attributes = [], array $values = [])
254254
try {
255255
return $this->getQuery()->withSavepointIfNeeded(fn () => $this->create(array_merge($attributes, $values)));
256256
} catch (UniqueConstraintViolationException) {
257-
return $this->useWritePdo()->where($attributes)->first();
257+
return $this->useWritePdo()->where($attributes)->firstOrFail();
258258
}
259259
}
260260

tests/Database/DatabaseEloquentHasManyTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ public function testCreateOrFirstMethodWithValuesFindsFirstModel()
188188
});
189189
$relation->getQuery()->shouldReceive('useWritePdo')->once()->andReturn($relation->getQuery());
190190
$relation->getQuery()->shouldReceive('where')->once()->with(['foo' => 'bar'])->andReturn($relation->getQuery());
191-
$relation->getQuery()->shouldReceive('first')->once()->with()->andReturn($model = m::mock(stdClass::class));
191+
$relation->getQuery()->shouldReceive('firstOrFail')->once()->with()->andReturn($model = m::mock(stdClass::class));
192192

193193
$this->assertInstanceOf(stdClass::class, $found = $relation->createOrFirst(['foo' => 'bar'], ['baz' => 'qux']));
194194
$this->assertSame($model, $found);

tests/Database/DatabaseEloquentMorphTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ public function testCreateOrFirstMethodFindsFirstModel()
234234
});
235235
$relation->getQuery()->shouldReceive('useWritePdo')->once()->andReturn($relation->getQuery());
236236
$relation->getQuery()->shouldReceive('where')->once()->with(['foo'])->andReturn($relation->getQuery());
237-
$relation->getQuery()->shouldReceive('first')->once()->with()->andReturn($model = m::mock(Model::class));
237+
$relation->getQuery()->shouldReceive('firstOrFail')->once()->with()->andReturn($model = m::mock(Model::class));
238238

239239
$this->assertInstanceOf(Model::class, $relation->createOrFirst(['foo']));
240240
}
@@ -255,7 +255,7 @@ public function testCreateOrFirstMethodWithValuesFindsFirstModel()
255255
});
256256
$relation->getQuery()->shouldReceive('useWritePdo')->once()->andReturn($relation->getQuery());
257257
$relation->getQuery()->shouldReceive('where')->once()->with(['foo' => 'bar'])->andReturn($relation->getQuery());
258-
$relation->getQuery()->shouldReceive('first')->once()->with()->andReturn($model = m::mock(Model::class));
258+
$relation->getQuery()->shouldReceive('firstOrFail')->once()->with()->andReturn($model = m::mock(Model::class));
259259

260260
$this->assertInstanceOf(Model::class, $relation->createOrFirst(['foo' => 'bar'], ['baz' => 'qux']));
261261
}

0 commit comments

Comments
 (0)