예제 #1
0
 /**
  * Delete all references created by this relationship
  *
  * @param Relationship    $relationship Forward relationship
  * @param object|object[] $value        Forward relationship value
  * @param string          $local_id     ID of local entity
  * @internal param string $key Forward relationship key
  */
 private function deleteRelationshipRefs(Relationship $relationship, $value, $local_id)
 {
     $ref = new Ref($relationship->getSource(), $local_id, $relationship->getName());
     if (!is_array($value)) {
         $value = [$value];
     }
     foreach ($value as $foreign_entity) {
         if (null !== $foreign_entity) {
             $foreign_id = $this->getEntityId($foreign_entity);
             $ref_key = $this->getKeyScheme()->getEntityRefKey($relationship->getTargetTable(), $foreign_id);
             $this->getDriver()->removeRef($ref_key, $ref);
         }
     }
 }
예제 #2
0
 /**
  * Get the key for a sort index on a relationship
  *
  * @param Relationship $relationship Relationship
  * @param string       $sort_field   Property name on the inverse entity
  * @param string       $id           Local ID
  * @return string
  */
 public function getSortIndexKey(Relationship $relationship, $sort_field, $id)
 {
     // srt:category-article:89726:title
     return static::SORT_NAMESPACE . $this->delimiter . $relationship->getSourceTable() . '-' . $relationship->getTargetTable() . $this->delimiter . $id . $this->delimiter . $relationship->getName() . $this->delimiter . $sort_field;
 }