PROBLEM: Nach Plugin Deinstallation verbleiben Attribute in "Variablen Informationen" von sORDER

Hallo, 

wir haben ein Plugin, welches Freitextfelder in der Tabelle  s_articles_attributes :

/** @var CrudService $Service */
		$service = Shopware()->Container()->get('shopware_attribute.crud_service');

		$service->update('s_articles_attributes', 'attributName', 'string', [
			'label' => 'Beispiel',
			'translatable' => true,
			'displayInBackend' => true,
			'position' => 50
		]);

Shopware()->Models()->generateAttributeModels(['s_articles_attributes']);

Diese Attribute Variablen finden sich auch in Einstellungen > E-Mail Vorlagen > sORDER > “Variablen Informationen” - z.B.:

{$sOrderDetails.0.additional_details.attributes.core.attributName}

 

Nach der Deinstallation des Plugins sind diese noch immer vorhanden, obwohl die Freitextfelder aus der Datenbank entfernt werden mit: 

/** @var CrudService $Service */
$service = Shopware()->Container()->get('shopware_attribute.crud_service');

$service->delete('s_articles_attributes', 'attributName');

Shopware()->Models()->generateAttributeModels(['s_articles_attributes']);

 

Im Frontend erhalten wir nach deinstalliertem Plugin einen Fehler: 

[2017-11-16 07:55:42] core.ERROR: PDOException: SQLSTATE[42S22]: Column not found: 1054 Unknown column 't28.attributName' in 'field list' in /html/shopware/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:828 

 

 

Was kann das sein? Und wie aktualisiert sich das Feld context in der Datenbank der Mailvorlagen? Also das feld  Variablen Informationen?

Die Variablen-Informationen werden gespeichert, wenn die Mail im Frontend verschickt wird. Es werden also immer die Variablen angezeigt, die beim letzten Mailversand verfügbar waren. Das erledigt sich also von alleine.

 

Die Fehlermeldung deutet auf ein Problem mit den Attribute-Models hin. Sieht mir so aus, als ob der Cache noch nicht weiß, dass die Attribute nicht mehr da sind. Am besten mal generateAttributeModels über CLI machen oder den Cache Ordner komplett per FTP löschen.

Hallo [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍

vielen Dank für deine Antwort.

Prinzipiell führe ich im Plugin bei der Deinstallation Shopware()->Models()->generateAttributeModels([‘s_articles_attributes’]); aus - reicht das nicht? Wie kommt es zu dem Problem? Bei anderen Kunden passiert das nicht. Ich hatte mal gehört, dass das Shopware Security Plugin dahingehend irgendetwas blockiert und Kunden daraufhin Probleme beim installieren oder deinstallieren von Plugins mit Attributen hatten. Kann das sein?!

 

Glaub ich eigentlich nicht.

Manchmal werden die Models aber ggf. noch von anderen Caches bspw. opcache oder APCu speichert.

 

Muss man dann im Plugin noch etwas anpassen? Solche Fehler sollen ja nicht passieren.

[@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍

ich glaube ich habe eine Ursache für dieses Verhalten gefunden. In verwende: 

$metaDataCache = Shopware()->Models()->getConfiguration()->getMetadataCacheImpl();
$metaDataCache->deleteAll();

Shopware()->Models()->generateAttributeModels(['s_XY_attributes']);

lediglich in der Funktion zum Hinzufügen der Attribute. In der Funktion zum Löschen der Attribute beim Deinstallieren verwende ich lediglich: 

Shopware()->Models()->generateAttributeModels(['s_XY_attributes']);

 

 

Möglicherweise liegt es daher an den fehlenden zwei Zeilen zur Invalidierung des MetadataCaches?!