情况如下: 我有一个表(PERSONS)与记录集合。它的结构:
id,
created,
modified,
number,
first_name,
… (up to 30 positions)
这是员工的“银行”。好吧,我必须准备这个表的年度存档(这样的黑盒子用于未使用的数据)。它应该分四个步骤完成:
正常方式并不难,但我尝试在没有存档文件的特殊实体的情况下进行,我发现了一些问题。第一步和第四步对我来说很容易,但第二和第三步没有。 第二步是以下(在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”自动增量(MySQL),但在第二个“id”是“int 11”自动增强,我不知道为什么。其余字段(int,text,varchar)是相同的。 PERSONS实体中的定义如下:
/**
* @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 :(得分:0)
是的,我知道如何按照上面的说法“手动”,但我试图找到更多“教条”的方式。也许是通过“元数据”,但我想用Symfony2来解决这个问题。