2011-09-09 73 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

如上所述,您应该定义getter和setter。您可以手动或在控制台上执行此操作:

php app/console doctrine:generate:entities Acme/StoreBundle/Entity/SomeEntity