[9.x] Rename firstOrNew() to firstOrMake()
caugner opened this issue · comments
Background
There are four classes that have a firstOrNew()
method:
Illuminate\Database\Eloquent\Builder
Illuminate\Database\Eloquent\Relations\BelongsToMany
Illuminate\Database\Eloquent\Relations\HasManyThrough
Illuminate\Database\Eloquent\Relations\HasOneOrMany
Problem
I noticed that the naming of this method is confusing to junior devs, because it is not consistent with ::make()
(which exists both on Builder
and HasOneOrMany
) and ::create()
on the model itself. Therefore it is not obvious what ->firstOrNew()
really does.
Solution
I propose to rename firstOrNew()
to firstOrMake()
to be consistent with the corresponding model methods. Since this is a breaking change, the transition could be made smoother by adding firstOrMake()
and deprecating firstOrNew()
in 9.x, and only dropping firstOrNew()
in 10.x.
PS: Maybe there's an import difference between firstOrNew()
and make()
that justifies the different naming.