本文整理匯總了PHP中Kdyby\Doctrine\EntityManager::merge方法的典型用法代碼示例。如果您正苦於以下問題:PHP EntityManager::merge方法的具體用法?PHP EntityManager::merge怎麽用?PHP EntityManager::merge使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類Kdyby\Doctrine\EntityManager
的用法示例。
在下文中一共展示了EntityManager::merge方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: saveEntity
/**
* Save entity into DB
*
* @param BaseEntity $baseEntity
* @return BaseEntity
* @throws \Exception
*/
protected function saveEntity(BaseEntity $baseEntity)
{
$isPersisted = UnitOfWork::STATE_MANAGED === $this->entityManager->getUnitOfWork()->getEntityState($baseEntity);
if ($isPersisted) {
$this->entityManager->merge($baseEntity);
} else {
$this->entityManager->persist($baseEntity);
}
$this->entityManager->flush();
return $baseEntity;
}
示例2: doInsert
private function doInsert($entity)
{
// get entity metadata
$meta = $this->em->getClassMetadata(get_class($entity));
// fields that have to be inserted
$fields = $this->getUniqueAndRequiredFields($meta, $entity);
// associations that have to be inserted
$associations = $this->getUniqueAndRequiredAssociations($meta, $entity);
// discriminator column
$discriminator = $this->getDiscriminatorColumn($meta);
// prepare statement && execute
$this->prepareInsert($meta, array_merge($fields, $associations, $discriminator))->execute();
// assign ID to entity
if ($idGen = $meta->idGenerator) {
if ($idGen->isPostInsertGenerator()) {
$id = $idGen->generate($this->em, $entity);
$identifierFields = $meta->getIdentifierFieldNames();
$meta->setFieldValue($entity, reset($identifierFields), $id);
}
}
// entity is now safely inserted to database, merge now
$merged = $this->em->merge($entity);
$this->em->flush(array($merged));
// when you merge entity, you get a new reference
return $merged;
}