1

我有两张桌子:

First:
id | name  | password
 1 | peter | old

Second:
id | name  | password

我首先从表中获取对象:

$first = Doctrine::getTable('First')->find(1);

$copy = $first->copy();

$second = new Second($first);
$second->save();

或者

$second = new Second($copy);
$second->save();

在这两种情况下,我都有:

Second:
id | name  | password
 1 | NULL  | NULL 
 2 | NULL  | NULL

可以制作这个副本吗?

4

3 回答 3

3

你试过toArray/fromArray吗?

$first = Doctrine::getTable('First')->find(1);

$second = new Second();
$second->fromArray($first->toArray());
$second->save();
于 2012-05-08T15:04:57.720 回答
2

为什么不使用克隆?它比使用 toArray、fromArray 更简单。

$first = Doctrine::getTable('First')->find(1);
//do whatever to $first here...

$second = clone $first;
$second->save();

不过,您可能必须将 $second 上的 ID 字段设置为 null。

于 2012-05-09T15:37:38.820 回答
1

当然可以,但我不这么认为。你在哪里看到的?我认为您不能将一个实体作为参数传递给另一个实体的构造函数。

只需手动执行或使用反射复制所有字段:

$first = Doctrine::getTable('First')->find(1);

$second = new Second();
$second->setValue1($first->getValue1());
$second->setValue2($first->getValue2());
...
$second->save();
于 2012-05-08T14:13:04.597 回答