[10.x] Allow specifying index name when calling ForeignIdColumnDefinition@constrained()
#46746
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem
I prefer verbose naming. I have a migration that looks like this:
Which blows up:
This can be worked around, but doesn't allow the developer to use the nice features of the schema builder, puts a lot more of a lift on developers, and leaves more room for error.
Solution
Allow calling code to specify the index name within the call to
ForeignIdColumnDefinition@constrained()
.This should not break backwards compatibility.
I also changed the second parameter of
constrained()
so that it allows null to be passed, which will coalesce to 'id'. I think this improves developer experience, so, a developer might write this instead:instead of:
$table->foreignIdFor(SomeModel::class)->constrained(null, 'id', 'my_foreign_index')