Details
Description
The problem is with Datetime value on entity, if I dirrecly modify it, unitOfWork will not add it into change set
// assume loaded entity through dql or repository:
$entity->getStartDate()->modify("+ 1day");
$em->persist($entity);
$em->flush(); // no changes
as far as I understand objects are compared through ($oldObject === $newObject) probably php takes spl_object_hash to do the comparison
copying an object works as expected
This is expected behavior, DateTime objects are thought of as immutable value objects (php allowing them to be mutable is sort of a design mistake that even Derick sees now).
Only changing the instance will change the value, otherwise the difference computation would be too difficult and would involve cloning the datetime (overhead).