有一个学说集,我想更改它的一些值。这些发生在另一个类中,并传递到dao级别以将其保存到数据库。还有另一行从db获取数据。由于该行,所有更改的对象都将替换。
$doctrineCollection1 = $empSalaryComponents->findBy('employee_number', $empNumber);
foreach ($empSalComCollection1 as $empSalComponent) {
$empSalComponent->setValue(9999999999999);
}
$doctrineCollection2 = $empSalaryComponents->findBy('employee_number', $empNumber);
现在,如果您打印这两个收藏集,您将得到相同的结果。
为避免这种情况,请使用这种方法
$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是不同的。 谁能解释这个原因?