Bravo3\Orm\Services\RelationshipManager::persistRefs PHP Method

persistRefs() private method

Persist refs in place of inverted indices
private persistRefs ( Relationship $relationship, string $key, object | object[] $value, string $local_id )
$relationship Bravo3\Orm\Mappers\Metadata\Relationship Forward relationship
$key string Forward relationship key
$value object | object[] Forward relationship value
$local_id string ID of local entity
    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);
        }
    }