创建表并克隆从旧表到新的一个记录

问题描述:

情况如下: 我有一个表(PERSONS)与记录集合。它的结构如下:创建表并克隆从旧表到新的一个记录

id, 
created, 
modified, 
number, 
first_name, 
… (up to 30 positions) 

这是员工的“银行”。那么,我必须准备,每年对这个表格进行存档(对于未使用的数据,这样的黑盒子)。它应该分四步完成:

  1. 检查是否存在存档例如2015_PERSONS
  2. 如果没有,创建表从个人表2015_PERSONS
  3. 拷贝单个记录2015_PERSONS表
  4. 删除个人表这个纪录

不难正常的方式,但我尽力去做没有特殊的档案文件实体,我发现了一些问题。第一和第四步对我来说很容易,但第二和第三步不是。 第二步是以下(在PERSONS控制器):

$manager = $this->getDoctrine()->getManager(); 
$metadata = $manager->getClassMetadata(PERSONS::class); 
$metadata->setPrimaryTable(array('name' => ‘2015_PERSONS’)); 
$schema = new SchemaTool($manager); 
$schema->createSchema(array($metadata)); 

并创建存档表但有一个区别。在第一个表中,“id”字段是“bigint 12”autoincrement(MySQL),但第二个“id”是“int 11”autoincrenent,我不知道为什么。其余的字段(int,text,varchar)是相同的。在人身上的定义如下:

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

但是根本问题是第三步,因为我找不到放置数据的方式。我尝试做了以下几个方面:

$data = $this->getRepo('PERSONS')->findOneBy(1); 
$second = clone $data; 
$second->setId(null); 
$second->save(); 

OR

$second = new Second(); 
$second->fromArray($data->toArray()); 
$second->save(); 

而且不知道如何找到办理2015_PERSONS表保存准备的数据副本。要善于提示我。

+0

hm,为什么不使用'getManager() - > persist()'和' - > flush()'?关于复制到第二个对象更好地使用第二种方法 – nowiko

+0

嗨,但我没有实体为$秒,所以我不能flush()它。对? – Tad

+0

好的,那么'new Second()'和save()'做了什么方法? – nowiko

是的,我知道如何做到这一点“手动”,因为我通知上面,但我试图找到更多的“学说”的方式。也许通过“元数据”,但我用Symfony2新鲜自己解决这个问题。