VersionPress\Database\DbSchemaInfo::getMnReferenceDetails PHP Method

getMnReferenceDetails() public method

public getMnReferenceDetails ( $junctionEntity )
    public function getMnReferenceDetails($junctionEntity)
    {
        foreach ($this->getAllEntityNames() as $entityName) {
            $entityInfo = $this->getEntityInfo($entityName);
            foreach ($entityInfo->mnReferences as $reference => $targetEntity) {
                $referenceDetails = ReferenceUtils::getMnReferenceDetails($this, $entityName, $reference);
                if ($referenceDetails['junction-table'] === $junctionEntity) {
                    return $referenceDetails;
                }
            }
        }
        return null;
    }

Usage Example

 /**
  * Process ParsedQueryData from DELETE query and deletes entity/entities data from Storage.
  * Source parsed query does not contain any special Sql functions (e.g. NOW)
  *
  * @param ParsedQueryData $parsedQueryData
  */
 private function processDeleteQuery($parsedQueryData)
 {
     $entityInfo = $this->dbSchemaInfo->getEntityInfo($parsedQueryData->entityName);
     if (!$entityInfo || !$entityInfo->usesGeneratedVpids) {
         foreach ($parsedQueryData->ids as $ids) {
             $where = [];
             foreach ($parsedQueryData->idColumnsNames as $key => $idColumnName) {
                 $where[$idColumnName] = $ids[$key];
                 $this->vpidRepository->deleteId($parsedQueryData->entityName, $ids[$key]);
             }
             if (!$entityInfo) {
                 $referenceDetails = $this->dbSchemaInfo->getMnReferenceDetails($parsedQueryData->table);
                 if (!$referenceDetails) {
                     return;
                 }
                 $this->deleteReference($referenceDetails, $where);
             } else {
                 $this->mirror->delete($parsedQueryData->entityName, $where);
             }
         }
         return;
     }
     foreach ($parsedQueryData->ids as $ids) {
         $id = $ids[0];
         // Composite primary key is not yet supported.
         $where['vp_id'] = $this->vpidRepository->getVpidForEntity($parsedQueryData->entityName, $id);
         if (!$where['vp_id']) {
             continue;
             // already deleted - deleting postmeta is sometimes called twice
         }
         if ($this->dbSchemaInfo->isChildEntity($parsedQueryData->entityName)) {
             $parentVpReference = "vp_" . $entityInfo->parentReference;
             $where[$parentVpReference] = $this->fillParentId($parsedQueryData->entityName, $entityInfo, $id);
         }
         $this->vpidRepository->deleteId($parsedQueryData->entityName, $id);
         $this->mirror->delete($parsedQueryData->entityName, $where);
     }
 }
All Usage Examples Of VersionPress\Database\DbSchemaInfo::getMnReferenceDetails