2014-10-15 3 views
0

나는이 클래스가 같은 테이블의 다른 필드에 ID 값을 사용해야합니다 암호. 필드 코드가 ARTICLE + ID 동일 사실교리, 난

(id, code) 

1, ARTICLE_1 

2, ARTICLE_2 

, 내가 함께이 필드를 완료하려고 : Exemple 내 데이터베이스에서 나는이 필요

public function __construct() { 

    $this->code = "ARTICLE_" . $this->getId(); 

} 

하지만 난 내 기사의 ID를 추가 할 때 함수가 생성되지 않고 함수 getId이 반환하지 않습니다. 나는 postPersist() 기능을 테스트하려고하지만 성공하지는 않습니다.

좋은 연습이 있습니까?

감사

Djoo

당신이 변수지만 함께 문자열을 연결하려면 "+"연산자를 사용할 수 없습니다 PHP에서
+0

어쨌든 코드에서 ID를 생성 할 수 있다면 처음부터 코드를 사용해야하는 이유는 무엇입니까? – andy

답변

0

$this->code = "ARTICLE_" . $this->getId();는 솔루션입니다 :

대신이 시도 http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#lifecycle-callbacks

내 엔티티에 주석 @ORM의 \의 HasLifecycleCallbacks을 추가하고 난 함수했다 :

/** @ORM\PostPersist */ 
public function doStuffOnPostPersist() 
{ 
    $this->setCode('ARTICLE_' . $this->getId()); 

} 

이 솔루션을 사용하면 이미 ID가 유지되어 있기 때문에 ID가 있습니다.

감사합니다.

0

"." 상징.

+0

여기가 주요 문제라고 생각하지 않습니다. 그때 그는 새로운 엔티티를 유지하고 ID가 없으므로 올바른 연결로는이를 해결하지 못합니다. – devsheeep

+0

죄송합니다. 질문을 올렸을 때 실수였습니다. 나는 "." 내 코드에서 $ this-> getId()는 객체가 아직 생성되지 않았기 때문에 객체 생성시 아무것도 반환하지 않습니다. – Johann

+0

내 잘못, 네 말이 맞아 내가 빨리 읽었 어. 또한 devsheeep은 처음 엔 ID를 자동으로 생성하기 전에 엔터티의 ID를 얻을 수 없다고 말했습니다. – Snroki