Erweiterung eines Models ohne Attribut-Tabelle

Hallo Zusammen,

wie kann ich ein Model ohne Attributtabelle um weitere Datenbankfelder erweitern?

Es geht mir um ein Model eines Communityplugins, das wir einsetzen.

Beste Grüße
David

@dfrerich schrieb:

Hallo Zusammen,

wie kann ich ein Model ohne Attributtabelle um weitere Datenbankfelder erweitern?

Es geht mir um ein Model eines Communityplugins, das wir einsetzen.

Beste Grüße
David

Hallo,

kurz und knapp: geht nicht, neue Felder kann man nur bei den Tabellen hinzufügen, die Attribut-Tabellen besitzen. Alternativ müsste man eben das andere Plugin umschreiben und dahingehend anpassen - wobei das natürlich nicht updatesicher wäre. Oder einfach den Plugin-Hersteller anfragen, ob er das zusätzliche Feld selbst integrieren kann.

Beste Grüße

Sebastian

Hallo Zusammen,

ich sag jetz mal ganz vorsichtig doch es geht. Jedenfalls bin ich da gerade dran…  Halo
Ich hab erfolgreich die s_article_configurator_groups erweitert ohne das Eltern-Model „Group“ komplett zu über schreiben.

Was ich bis jetzt noch nicht hinbekommen habe ist mittels 

$tool->getUpdateSchema($classes);

die Datenbanktabelle zu erweitern. Deswegen mache ich diesen Schritt mit „Plain SQL“  Gasp

Gruß
Michael

Ups vergessen zu sagen wie ich es gemacht habe.  Lips-are-sealed

Ich habe das Model wie folgt erweitert
 

namespace 
/**
 * @ORM\Entity
 * @ORM\Table(name="s_article_configurator_groups")
 */
class Group extends \Shopware\Models\Article\Configurator\Group
{

[...]

}

 und natürlich in die Bootstrap.php

public function afterInit()
{
   $this->registerCustomModels();
   parent::afterInit(); 
}

WICHTIG: Man muss die Repository Methoden anpassen (Hook)

Gruß

Michael

 

P.S: Bitte dran denken ich bin noch dran und rein theoretisch kann noch alles zusamenfallen  Halo

Hallo Michael,

danke für den Input, ich habe es mittlerweile auch “geschafft”.
Es ist aber schon recht umständlich und nicht ganz optimal.

Bgzl deiner Frage zu Datenbank Updaten:

public function install()
{
    $this->updateSchema();
}


private function updateSchema()
{
    $em = $this->getEntityManager();
    $schemaTool = new Doctrine\ORM\Tools\SchemaTool($this->getEntityManager());
    $classes = array(
        $em->getClassMetadata('')
    );

    $schemaTool->updateSchema($classes, true);
}

 

1 „Gefällt mir“

Hey dfrerich,

cool…  Wearing-Sunglasses
Ja, da hast du vollkommen recht…

Super, vielen Dank zurück. Das werde ich später ausprobieren.

Gruß
Michael 

Hallo zusammen

Momentan stehen wir an derselben Stelle.

Wir möchten im Backend die Konfigurationseinstellungen der Varianten-Gruppe mit einer neuen Checkbox versehen.
Die Checkbox konnten wir bereits im Backend hinzufügen und durch eure Hilfe können wir nun auch via Bootstrap das Zusatzfeld in die Datenbanktabelle  s_article_configurator_groups einfügen.

Nun haben wir aber folgendes Problem:
Wenn wir die Checkbox im Backend aktivieren und den Speicher-Button betätigen, ändert sich der Wert in der Datenbank nicht.
D.h. Der Wert der Checkbox wird nicht an die Datenbank übermittelt.
 

Aufbau der Checkbox:

var kmudoToggle = Ext.create('Ext.form.field.Checkbox', {
        name: 'kmudodropdownactive',
        inputValue: '1',
        uncheckedValue: '0',
        fieldLabel: 'Variante mit Bild'
});

Unsere Erweiterung des Models:

//{block name="backend/article/model/configurator_group/fields" append}
	{ name: 'kmudodropdownactive', type: 'int' },
//{/block}

In der Netzwerkanalyse sehen wir aber in der saveConfiguratorGroup den korrekten Wert der Checkbox. (Wenn Checkbox aktiv = Wert 1 / wenn Checkbox nicht aktiv = Wert 0)

Wisst ihr vielleicht an was es liegen könnte?

 

Beste Grüsse

KMUdo AG

Hallo Zusammen

Weiss niemand wie im Backend die Backend Templates angelegt werden sodass ein Wert in die Datenbank gespeichert werden kann?
Muss man ein Controller oder auch ein Store anlegen?

Freundliche Grüsse

KMUdo AG