本文整理汇总了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;
}