This is another attempt at my change in #53559, to use the existing getQualifiedOwnerKeyName() method rather than assuming the format of table.column. As @crynobone noticed, that change revealed that the current code can end up passing a null value to str_contains(), which is deprecated.
I've added a null check to getQualifiedOwnerKeyName() so we don't attempt to qualify a null column. In the example of one of the tests that was throwing the deprecation notice (DatabaseEloquentIntegrationTest::testEmptyMorphToRelationship) this means that in practice the where query being added changes from $this->query->where('photos.', ...) to $this->query->where('', ...). The 'add constraints' methods could be updated to handle null values differently, but I'm hoping the change I have here should be the minimum required to fix the issue properly with the lowest risk to other areas.
This is another attempt at my change in #53559, to use the existing
getQualifiedOwnerKeyName()
method rather than assuming the format oftable.column
. As @crynobone noticed, that change revealed that the current code can end up passing a null value tostr_contains()
, which is deprecated.I've added a null check to
getQualifiedOwnerKeyName()
so we don't attempt to qualify a null column. In the example of one of the tests that was throwing the deprecation notice (DatabaseEloquentIntegrationTest::testEmptyMorphToRelationship
) this means that in practice thewhere
query being added changes from$this->query->where('photos.', ...)
to$this->query->where('', ...)
. The 'add constraints' methods could be updated to handle null values differently, but I'm hoping the change I have here should be the minimum required to fix the issue properly with the lowest risk to other areas.