3 Stimmen

Wie NICHT persist Objekt innerhalb Entität mit Doctrine?

Ich habe die folgende Klasse, die mit Doctrine persistiert wird, aber ich will nicht, dass die knowledgeArea et knowledgeLevel Attribute eingefügt werden, da es sich um Objekte und nicht um Attribute handelt.

Was muss ich tun, um diese Objekte nicht einzufügen, sondern nur die Attribute mit dem Verweis auf sie?

ANMERKUNG : Ich lerne Doktrin, ich glaube, dass ich etwas falsch mache, aber ich bin mir nicht sicher. Und ich benutze 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

2voto

gview Punkte 14129

Die Frage, die sich Ihnen stellt, ist also, wie Sie die Fremdschlüsselbeziehungen festlegen? Der typische Weg ist, Referenzen zu verwenden. Innerhalb eines Symfony2-Controllers als Beispiel würden Sie haben:

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

Wenn Sie ein anderes Framework verwenden, benötigen Sie das Objekt doctrine entitymanager, aber die Idee ist die gleiche.

Dies ist hier dokumentiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X