Доктрина обновляет всегда сущность если фиксирует любое её изменение.
Самый простой пример, например в БД дата записана в одном тип дате, а при доставание вы её конвертируете в самом объекте в другой тип даты.
Другой пример, в базе данных у вас данные в BIGINT, а доктрина при доставание конвертирует их в строку.
Чтобы избежать этого, вам нужно сделать так, чтобы в сущность попадали уже готовый формат данных полностью идентичный сохранённым в БД.
Возможно вам нужно написать свой тип данных.
https://www.doctrine-project.org/projects/doctrine...
Пример фикса для bigint
class BigIntType extends Type
{
public function convertToPHPValue($value, AbstractPlatform $platform): ?int
{
return $value === null ? null : (int) $value; //до того как данные попали в сущность, мы насильно конвертируем в int (иначе будет строка)
}
public function getSQLDeclaration(array $column, AbstractPlatform $platform): string
{
return $platform->getBigIntTypeDeclarationSQL($column);
}
public function getName(): string
{
return Types::BIGINT;
}
}