При использовании Doctrine 1.2 у меня возникают проблемы с удалением элементов из коллекции Doctrine_Collection.
У меня есть коллекция Doctrine, заполненная временными Doctrine_Records. Функции $record->delete()
и $record->unlink()
здесь не работают должным образом, так как они используют идентификаторы записи. (Каких временных записей нет, так как они еще не отображаются в базе данных.)
Пример (в котором в компании много сотрудников)
/* Get a Company that has no Employees yet. */
$company = Doctrine::getTable('Company')->find(1);
/* Add some Employees */
$names = array('Arthur','Bob','Charlie');
foreach ($names as $name)
{
$employee = new Employee;
$employee->name = "Arthur"
$company->Employee->add($employee);
}
Теперь, перед сохранением чего-либо в базе данных, у меня есть один сотрудник в $emp
, которого я хочу удалить из коллекции.
$emp->delete() /* Does not work when $emp is transient. */
Что работает, так это, но я действительно сомневаюсь, что это путь.
foreach($company->Employee as $key => $value)
if ($emp == $value)
{
$company->Employee->remove($key);
break;
}
Это не самый простой способ сделать это. Есть ли более рекомендуемый способ сделать это?