Bravo3\Orm\Services\EntityManager::persist PHP Method

persist() public method

Persist an entity
public persist ( object $entity, integer $ttl = null )
$entity object Entity object to persist
$ttl integer Optional TTL if the driver supports it, seconds past current time
    public function persist($entity, $ttl = null)
    {
        $metadata = $this->mapper->getEntityMetadata(Reader::getEntityClassName($entity));
        $serialiser = $this->getSerialiserMap()->getDefaultSerialiser();
        $reader = new Reader($metadata, $entity);
        $id = $reader->getId();
        $this->validateId($id);
        if ($ttl) {
            $this->driver->debugLog("Caching " . $metadata->getTableName() . ' ' . $id . ' (TTL: ' . $ttl . ')');
        } else {
            $this->driver->debugLog("Persisting " . $metadata->getTableName() . ' ' . $id);
        }
        $this->driver->persist($this->key_scheme->getEntityKey($metadata->getTableName(), $id), $serialiser->serialise($metadata, $entity), $ttl);
        $this->getRelationshipManager()->persistRelationships($entity, $metadata, $reader, $id);
        $this->getIndexManager()->persistIndices($entity, $metadata, $reader, $id);
        $this->getQueryManager()->persistTableQueries($entity, $metadata, $reader, $id);
        if ($entity instanceof OrmProxyInterface) {
            $entity->setEntityPersisted($id);
        }
        return $this->getProxy();
    }

Usage Example

Example #1
0
 /**
  * Re-persist an array of records
  *
  * @param object[] $records
  * @param Entity   $metadata
  * @param int      $batch_size
  */
 private function rebuildRecords($records, Entity $metadata, $batch_size)
 {
     $count = 0;
     /** @var OrmProxyInterface $record */
     foreach ($records as $record) {
         $this->entity_manager->persist($record);
         if (++$count == $batch_size) {
             $this->entity_manager->flush();
             $count = 0;
         }
     }
     if ($count) {
         $this->entity_manager->flush();
     }
 }
All Usage Examples Of Bravo3\Orm\Services\EntityManager::persist