2011-09-09 5 views
3

모든 필드가 비공개 인 경우 Doctrine2 엔티티를 저장하는 방법은 무엇입니까? 거기에 일종의 메커니즘이 있습니까?Doctrine2 엔티티를 저장하는 방법

어떻게이를 저장할 수 있습니다

/** 
* @Entity 
*/ 
class SomeEntity 
{ 
    /** @Id @Column(type="integer") @GeneratedValue */ 
    private $id; 

    /** @Column */ 
    private $title; 

} 

방법, 예를 들어 title을 변경하려면? 어쩌면 EntityManager를 통해 가능합니까?

PS : 감사합니다 사전에

답변

8
class SomeEntity 
{ 
    /** @Id @Column(type="integer") @GeneratedValue */ 
    private $id; 

    /** @Column */ 
    private $title; 

    public function setTitle($title){ 
     $this->title = $title; 
    } 
} 

사용과 같은 :

$entity = new SomeEntity(); 
$entity->setTitle('title'); 
$em->persist($entity); //$em is an instance of EntityManager 
$em->flush(); 

Это правильный способ. А так можно и воутренности Доктрины полезть, אסואון :)

+0

많은 엔티티 각각에서이를 수행해야하기 때문에 적합하지 않습니다. Знаю, знаю такой способ, но он не подходит, потому что так мне всё равно придётся лезть в доктрину чтобы научить её генерить 세트 {} ИМЯ методы для каждой сущности или ручками в сотне-другой таблиц это делать. Я думал есть какой-то друго способ. – ajile

+0

하지만 그것이 작동해야하는 방법 .... 모범 사례 등 – Flukey

1
public function __get($property) 
{ 
    return $this->$property; 
} 

public function __set($property,$value) 
{ 
    $this->$property = $value; 
} 
1

getters와 setters를 정의해야합니다. 이 작업은 수동으로 또는 콘솔에서 수행 할 수 있습니다.

php app/console doctrine:generate:entities Acme/StoreBundle/Entity/SomeEntity 
관련 문제