Существует коллекция доктрин, и я хочу изменить некоторые значения в ней. Это происходит в другом классе и передается на уровень дао, чтобы сохранить его в базе данных. и там есть еще одна строка для извлечения данных из базы данных. из-за этой строки все измененные объекты заменяются.
$doctrineCollection1 = $empSalaryComponents->findBy('employee_number', $empNumber);
foreach ($empSalComCollection1 as $empSalComponent) {
$empSalComponent->setValue(9999999999999);
}
$doctrineCollection2 = $empSalaryComponents->findBy('employee_number', $empNumber);
Теперь, если вы напечатаете эти 2 коллекции, вы получите те же результаты.
Чтобы избежать этого, используйте этот подход,
$doctrineCollection1 = $empSalaryComponents->findBy('employee_number', $empNumber);
$employeeSalaryComponents = new Doctrine_Collection('EmployeeSalaryComponent');
foreach ($doctrineCollection1 as $object) {
$object = clone $object;
$object->setValue(9999999999999);
$employeeSalaryComponents->add($object);
}
$doctrineCollection2 = $empSalaryComponents->findBy('employee_number', $empNumber);
теперь $ doctrineCollection1 и $ employeeSalaryComponents - это разница.
Кто-нибудь может объяснить причину этого?