2012-05-08 2 views
1

심포니 내가 가진 두 개의 테이블 :복사 개체 - 1.4

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 

이 복사본을 만들 수 있습니까?

답변

3

당신이 toArray/fromArray으로 시도?

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

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

물론 그렇지만 나는 이렇게 생각하지 않습니다. 어디서 봤니? 하나의 엔티티를 하나의 엔티티를 다른 것의 생성자에 대한 매개 변수로 전달할 수 있다고는 생각하지 않습니다.

는 그냥 수동 또는 사용 반사 모든 필드를 복사 할 :

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

$second = new Second(); 
$second->setValue1($first->getValue1()); 
$second->setValue2($first->getValue2()); 
... 
$second->save(); 
+0

나는이 해결책을 안다. 그러나 나는 더 빠른 것을 원할 것이다.) –

+0

어쨌든 이것은 어쨌든, 결국 당신에 의해서가 아니라 어떤 코드에 의해 수행 될 것이다. 또는 코딩의 측면에서 더 빠른 것을 의미합니까? 그 이유는 내가 반사를 사용했다 – Dariop

2

복제본을 사용하지 않는 이유는 무엇입니까? toArray, fromArray를 사용하는 것보다 덜 귀찮습니다.

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

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

$ 필드에서 ID 필드를 null로 설정해야 할 수도 있습니다.

+0

그냥 '두 번째'테이블에 레코드를 복사하는 대신 같은 테이블에 새 레코드를 만들지 않을까요? –