我有以下使用Doctrine持久化的类,但我不希望插入knowledgeArea
和knowledgeLevel
属性,因为它们是对象,而不是属性。
我不需要插入这些对象,而只需要引用它们的属性?
注意:我是学习主义,我认为我做错了,但我不确定。我正在使用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
答案 0 :(得分:1)
所以看来你的问题是如何设置外键关系?典型的方法是使用引用。以Symfony2控制器为例,您将拥有:
$em = $this->getDoctrine()->getEntityManager();
$knowledge = new Knowledge();
$knowledge->setKnowledgearea($em->getReference('AcmeBundle:Knowledges', 3));
如果你正在使用其他框架,你需要doctrine entitymanager对象,但想法是一样的。