Schönen guten Morgen,
Ich bin über folgendes Problem gestolpert und finde dafür keine Erklärung bzw. Lösung:
Legt man über die Models eine neue Unit Entity an, persistiert sie und versucht man danach einen neuen Artikel über die Artikelresource anzulegen, führt das zu einer ORM Exception weil die ArticleID im ArticleDetail NULL ist. Persistiert man die Unit Entity NICHT, dann klappt die Anlage danach wunderbar - die Unit ist aber natürlich nicht persistiert.
Ich habe das ganze mal in einem kleinen Testbeispiel abgebildet (ist so getestet und zeigt den genannten Fehler):
$em = $this->getContainer()->get('models');
// Crate unit
$unit = new Shopware\Models\Article\Unit();
$unit->setUnit('m');
$unit->setName('Meter');
// @TODO Why does persist/flush of unit lead to an articleId NULL when article is crated via resource bellow???
$em->persist($unit);
$em->flush($unit);
// Build article data array
$data = array(
'name' => 'Testartikel',
'taxId' => 1,
'description' => 'Description',
'descriptionLong' => 'Description',
'active' => true,
'mainDetail' => array(
'number' => '4711',
'active' => true,
'inStock' => 20,
'unitId' => $unit->getId(),
'ean' => '12345678',
),
);
$articleResource = Components\Api\Manager::getResource('article');
$articleResource->create($data);
Ohne persist() und flush() funktioniert alles wunderbar.
Hier die Exception im Detail:
[Shopware\Components\Api\Exception\OrmException]
An exception occurred while executing 'INSERT INTO s_articles_details (articleID, unitID, ordernumber, suppliernumber, kind, additionaltext, active, instock, stockmin, weight, width, length, height,
ean, purchaseprice, position, minpurchase, purchasesteps, maxpurchase, purchaseunit, referenceunit, packunit, shippingfree, releasedate, shippingtime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' with params [null, 53, "4711", null, 1, null, 1, 20, null, null, null, null, null, "12345678", 0, 0, 1, null, null, null, null, null, 0, null, null]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'articleID' cannot be null
Vielleicht gibt es hier den ein oder anderen Doctrine Profi der mir einen Tipp geben kann!?
Danke Euch vorweg,
LG
Synonymous