Hallo zusammen ,
ich bin gerade dabei über mein Plugin ein Produkt anzulegen. Diese Produkt benötigt allerdings noch eine Zuordnung zu meiner erstellten Custom Entity. Das Anlegen einer Custom Entity (hier : einem Car) wird vor dem Anlegen des Produkts durchgeführt. Wenn ich das richtig “verstanden” habe , dann reicht es ja aus, die passende ID des Eintrags meiner Custom Entity dem Produkt in der Upsert Methode mit zu übergeben und dann dürfte Shopwre den Rest erledigen?
Soabald ich aber über meinen unten aufgezeigten Weg versuche die IDs zu "erstellen / vergeben wird eine
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: … id_car -Exception der Mapping-Tabelle geworfen.
Wie vergebe ich hier die IDs bzw. wie muss denn die Zuordnung korrekt aussehen, damit ich meine Zuordnung hinbekomme?
Car und Produkt stehen in einer M:N-Relation “zueinander” und ist dem Bundle-Example nachempfunden.
Das habe ich hier in der “Activate” -Methode meines Plugins (Testweise):
// Einfügen eines Eintrags in der Custom Entity "Car"
/** @var EntityRepositoryInterface $CarRepository */
$CarRepository = $this->container->get('custom_car.repository');
$carID = Uuid::randomHex();
$CarRepository->create((
[
[
"id" => $carID,
"manufacturer" => "Audi",
//... complete definition
]
]
), $activateContext->getContext());
//Einfügen des Produkts
$productID = Uuid::randomHex();
$productRepository = $this->container->get('product.repository');
$productRepository->upsert([
[
'id' => $productID,
'product_version_id'=>$activateContext->getContext()->getVersionId(),
"name" => "Produkt1",
'price' => [['currencyId' => Defaults::CURRENCY, 'gross' => 15, 'net' => 10, 'linked' => false]],
'manufacturer' => ['name' => 'Hersteller1'],
'tax' => ['name' => '19%', 'taxRate' => 19],
'stock' => 2222,
'productNumber' => "ABDSE",
'cars' => [['id_car'=>$carID]]
]
],
$activateContext->getContext()
);
Für Hilfe bin ich sehr Dankbar!!