如何用Doctrine来保持实体内的对象?

时间:2012-05-23 00:39:03

标签: php mysql doctrine-orm

我有以下使用Doctrine持久化的类,但我不希望插入knowledgeAreaknowledgeLevel属性,因为它们是对象,而不是属性。

我不需要插入这些对象,而只需要引用它们的属性?

注意:我是学习主义,我认为我做错了,但我不确定。我正在使用MySQL。

class Knowledge {

    /** @Id @Column(name="id", type="bigint") @generatedValue(strategy="AUTO") **/    
    private $id;

    /** @Column(name="name", type="string") **/
    private $name;

    /** @Column(name="description", type="text") **/
    private $description;

    /** @Column(name="exibition_order", type="integer") **/
    private $exibitionOrder;

    /**         
    * @ManyToOne (targetEntity="KnowledgeArea", inversedBy="knowledges")
    * @JoinColumn(name="knowledge_area_id", referencedColumnName="id")
    **/
    private $knowledgeArea; #this is an object

    /** 
    * @ManyToOne (targetEntity="KnowledgeLevel", inversedBy="knowledges")
    * @JoinColumn(name="knowledge_level_id", referencedColumnName="id")    
    **/
    private $knowledgeLevel; #this is an object

1 个答案:

答案 0 :(得分:1)

所以看来你的问题是如何设置外键关系?典型的方法是使用引用。以Symfony2控制器为例,您将拥有:

$em = $this->getDoctrine()->getEntityManager();
$knowledge = new Knowledge();
$knowledge->setKnowledgearea($em->getReference('AcmeBundle:Knowledges', 3));

如果你正在使用其他框架,你需要doctrine entitymanager对象,但想法是一样的。

这是documented here.