[5.4] Eloquent BelongsTo fails with incrementing key but using non-integer non-keys on the relation #19631
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.
When a model
belongsTo
another model with an incrementing primary key using a non-primary-key as theother_key
, the generated query when eager loading causes SQL data type error and/or possibly yielding wrong result if the foreign key column isnull
.Consider the following database structure:
table
users
id
integer incrementing keyrole
string nullabletable
user_roles
id
integer incrementing keyctf_role
stringThe following code fragment demonstrate the example, where I am referencing column
users.role
onuser_roles.ctf_role
with string type.If I put a
UserRole
with a non-numericctf_role
(test
in the following example), the following is the result:If I put a
UserRole
withctf_role
set to0
, the object will be erroneously loaded to the relation.This pull request remove the bug by always return null in the key list no matter whether the key is incrementing or not.