3

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

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

注意:我正在学习 Doctrine,我认为我做错了什么,但我不确定。我正在使用 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
4

1 回答 1

2

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

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

如果您使用其他框架,则需要学说 entitymanager 对象,但想法是相同的。

在此处记录。

于 2012-05-23T01:24:30.940 回答