Doctrine 2文档声明:
删除两个实体之间的关联是类似的 直截了当。有两种策略,按键和按键 元件。
“按键”是什么意思?它是相关实体的id
字段,还是集合中相关实体的位置?例如,此处使用$ithComment
(即评论的位置):
// Remove by Key
$user->getComments()->remove($ithComment);
$comment->setAuthor(null);
答案 0 :(得分:1)
它是集合中相关实体的位置。在检查ArrayCollection ..
public function add($value)
{
$this->_elements[] = $value;
return true;
}
public function remove($key)
{
if (isset($this->_elements[$key])) {
$removed = $this->_elements[$key];
unset($this->_elements[$key]);
return $removed;
}
return null;
}
您可以看到没有使用对集合项标识符的引用。
答案 1 :(得分:0)
根据Doctrine2 API,一个Doctrine Collection的删除方法,
“从集合中删除指定索引处的元素”
(见https://github.com/doctrine/common/blob/master/lib/Doctrine/Common/Collections/Collection.php#L78)
我的结论是,你所谈论的关键确实是相关实体的立场。
答案 2 :(得分:0)
我有解决方案,也许对你有好处:
public function addSectors(ArrayCollection $sectors)
{
foreach($sectors as $k => $sector) {
$this->addSector($sector);
}
}
public function removeSectors($sectors)
{
foreach($sectors as $k => $sector) {
unset($this->sectors[$k]);
}
}