private function persistRefs(Relationship $relationship, $key, $value, $local_id)
{
list($to_remove, $to_add, $maintain) = $this->getRelationshipDeltas($key, $relationship, $value);
$ref = new Ref($relationship->getSource(), $local_id, $relationship->getName());
// When we're in maintenance mode, force the ref table to be built
if ($this->entity_manager->getMaintenanceMode()) {
$to_add = array_merge($to_add, $maintain);
}
foreach ($to_remove as $foreign_id) {
$ref_key = $this->getKeyScheme()->getEntityRefKey($this->getTargetTable($relationship), $foreign_id);
$this->getDriver()->removeRef($ref_key, $ref);
}
foreach ($to_add as $foreign_id) {
$ref_key = $this->getKeyScheme()->getEntityRefKey($this->getTargetTable($relationship), $foreign_id);
$this->getDriver()->addRef($ref_key, $ref);
}
}