Probleme beim Erstellen von Entities

Hallo liebe Community,

 

ich habe mich mal an Shopware rangemacht und mir dazu die Academy Videos angeschaut. Dort scheitert es bei mir allerding bei dem Controller Video. 
An sich, einen Controller anlegen ist kein Problem, aber wenn ich darin, wie im Video mit dem Faker, Daten in die DB schreiben will, kommt es zum Problem.

Wenn es nur ein Datensatz ist, macht es keine Probleme solange noch kein Datensatz in dem Table ist.

Wenn ich mehrere gleichzeitig oder einzeln noch weitere Anlegen möchte, bekomme ich folgende Fehlermeldung:

{
  "errors": [
    {
      "status": "500",
      "code": "FRAMEWORK__WRITE_TYPE_INTEND_ERROR",
      "title": "Internal Server Error",
      "detail": "Expected command for "
      SwagShopFinder
      \
      \
      Core
      \
      \
      Content
      \
      \
      ShopFinder
      \
      \
      ShopFinderDefinition
      " to be "
      Shopware
      \
      \
      Core
      \
      \
      Framework
      \
      \
      DataAbstractionLayer
      \
      \
      Write
      \
      \
      Command
      \
      \
      InsertCommand
      ". (Got: Shopware\\Core\\Framework\\DataAbstractionLayer\\Write\\Command\\UpdateCommand)",
      "meta": {
        "parameters": {
          "definition": "SwagShopFinder\\Core\\Content\\ShopFinder\\ShopFinderDefinition",
          "expectedClass": "Shopware\\Core\\Framework\\DataAbstractionLayer\\Write\\Command\\InsertCommand",
          "actualClass": "Shopware\\Core\\Framework\\DataAbstractionLayer\\Write\\Command\\UpdateCommand"
        }
      }
    }
  ]
}

Response code: 500 (Internal Server Error); Time: 185ms; Content length: 672 bytes

 

Okay ich konnte den Fehler selbst finden.
Es war ein Fehler in der FieldCollection bei der EntityDefinition.

Hallo @Julian11‍,

kannst du mir zufälligerweise sagen, was genau das Problem war? Bei meiner Entwicklung habe ich exakt das gleiche Verhalten. Vielen Dank im Voraus.

Für alle, die das auch so zum Kot*en finden, wenn man zwar erklärt, dass man den Fehler gefunden hat aber dann selbst auf Nachfrage nicht mit seinem Geheimnis rausrückt:

Der Fehler wird (auch … bei mir war es jedenfalls genau das) ausgelöst, wenn man das IdField zwar auf Required aber nicht auf PrimaryKey setzt …

Muss also so aussehen:

 

return new FieldCollection([
	(new IdField('id', 'id'))->addFlags(new Required(), new PrimaryKey())
]);

 

2 „Gefällt mir“

./bin/console dal:validate ist auch ne gute Option :slight_smile:

3 „Gefällt mir“

The error could also be caused by missing created_at and updated_at fields in table.

Im Sinne einer Sammlung möglicher Fehlerquellen setzte ich dieses Topic einfach mal fort.

Bei mir war der Fehler ebenfalls in der EntityDefinition:

Ich hatte auch die Foreign Keys als Flag new PrimaryKey() mitgegeben:

            (new IdField('id', 'id'))->addFlags(new Required(), new PrimaryKey()),
            (new IdField('foreign_id', 'foreignId'))->addFlags(new Required(), new PrimaryKey())

Das ist natürlich Quatsch.

das commando

hat mir den Fehler leider nicht angezeigt.