Thanks to visit codestin.com
Credit goes to github.com

Skip to content

SimpleObjectHydrator produces wrong values with inheritance table and simple array type  #5989

@w3sami

Description

@w3sami

I am getting empty array instead of array with some values, since SimpleObjectHydrator converts the value with convertToPHPValue

line 129 $value = $type->convertToPHPValue($value, $this->_platform);

this doesent play well with the null check below

line 134:
// Prevent overwrite in case of inherit classes using same property name (See AbstractHydrator)
if ( ! isset($data[$fieldName]) || $value !== null) {
$data[$fieldName] = $value;
}

since arrayType->convertToPHPValue returns [] when null, resulting in a leak from the wrong left joined table.

solution is easy, dont use the converted value in the if, but instead a raw value.

eg line 125 + $rawValue = $value;
and
136: if ( ! isset($data[$fieldName]) || $rawValue !== null) {

sorry I don't have time to write a pr with tests

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions