Formularfeld per ORM hinzufügen- automatische id?

Hallo, ich habe in meinem Plugin ein bestehendes Formular per $query = Shopware()-\>Models()-\>getRepository('Shopware\Models\Form\Form')-\>getFormQuery($formid); $form = $query-\>getOneOrNullResult(\Doctrine\ORM\AbstractQuery::HYDRATE\_OBJECT); geholt und füge ein Feld hinzu mit: $new\_field=new Shopware\Models\Form\Field(); $new\_field-\>setTyp('text'); $new\_field-\>setClass('normal'); $new\_field-\>setLabel("Labelbezeichnung"); $new\_field-\>setNote("Bezeichner"); $new\_field-\>setRequired(0); $new\_field-\>setName("Name"); $new\_field-\>setValue(""); $new\_field-\>setErrorMsg(''); $form-\>addField($new\_field); wenn ich mir jetzt alle Formfelder ausgeben lasse, sehe ich das mein hinzugefügtes Feld keine ID erhält, die es benötigt. Es gibt ja auch keine setID(). Irgendwo habe ich da einen Denkfehler und weiß nicht wo! Kann mir da einer unter die Arme greifen? Grüße mattis

Hallo Mattis, die Id wird über MySQL Autoincrement automatisch vergeben. $new\_field=new Shopware\Models\Form\Field(); $new\_field-\>setTyp('text'); $new\_field-\>setClass('normal'); $new\_field-\>setLabel("Labelbezeichnung"); $new\_field-\>setNote("Bezeichner"); $new\_field-\>setRequired(0); $new\_field-\>setName("Name"); $new\_field-\>setValue(""); $new\_field-\>setErrorMsg(''); $form-\>addField($new\_field); // Save new field to db Shopware()-\>Models()-\>flush() // id is generated by mysql var\_dump($new\_field-\>getId()); Viele Grüße, Benjamin Cremer :shopware:

Hallo Benjamin, ich werde das gleich Montag ausprobieren… Aber ich glaub das aufs Wort :D. Das das Feld auch in die DB zurückgeschrieben werden muss hätte ich auch gleich dran denken können. Vielen Dank und Grüße mattis

Hallo Benjamin, hallo auch an alle, vielen Dank funktioniert bestens! Ich hab gleich zu den Models eine weitere Frage. Hier Model Repositories > Zentrale Ebene für Datenabfragen wird beschrieben wie ich auf ein vorhandenes Repository zugreife. Versuche ich allerdings mit Shopware()-\>Models()-\>Form()-\>getListQuery(); bzw. Shopware()-\>Models()-\>Form()-\>getListQuery(null,null,1,100); zuzugreifen erhalte ich eine Fehlermeldung , “Shopware/Models/Form/Repository is not a valid entity or mapped super class”. Wie ruft man den dieses bzw. generell ein vorhandenes Repository auf? Für Hilfe wäre ich sehr dankbar. viele Grüße mattis

Hallo, ich habe gedacht, das alles funktioniert, doch nun bekomme ich dauernd folgende Fehlermeldung: “exception ‘Doctrine\ORM\ORMInvalidArgumentException’ with message 'A new entity was found through the relationship ‘Shopware\Models\Shop\Shop#main’ that was not configured to cascade persist operations for entity: Shopware\Models\Shop\Shop@0000000069fc5aee000000001c5f2f32. To solve this issue: Either explicitly call EntityManager#persist() on this unknown entity or configure cascade persist this association in the mapping for example @ManyToOne(…,cascade={“persist”})…” Ich hab das so gemacht, wie Benjamin beschrieben hat, nur kann ich damit nix anfangen. Wie bekomme ich denn den EntitiyManager? Viele Grüße mattis