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

Open
opened 2026-01-22 15:02:01 +01:00 by admin · 0 comments
Owner

Originally created by @w3sami on GitHub (Aug 24, 2016).

Originally assigned to: @Ocramius on GitHub.

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

Originally created by @w3sami on GitHub (Aug 24, 2016). Originally assigned to: @Ocramius on GitHub. 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
admin added the Bug label 2026-01-22 15:02:01 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#5228