При использовании 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;
}
Это не похоже на самый простой способ сделать это. Есть ли более рекомендуемый способ сделать это?