Hi,
@Max_Shop danke für deine Antwort und auch zum Hinweis des Wording.
Die richtige Methode heißt getExtension(%myExtension%)
.
Aber ich habe weiterhin Probleme, ich habe einen Datensatz gespeichert:
Dieser wurde mit folgenden Code eingefügt:
...
$this->productRepository
->upsert([[
'id' => $idMainProduct,
'components' => [
'components' => $idProductComponent
]
]], $context);
....
Auslesen tu ich den Datensatz mit o.g. Anweisung:
$product = $this->productRepository
->search(
new Criteria([$idMainProduct]),
$context
)
->first();
Dann mit $product->getExtension('components')
bekomme ich ein Objekt meiner Klasse(?)…
leider verstehe die Annotation nicht:
Returns a single extension struct element of this class
Deutsch
Gibt ein einzelnes Erweiterungsstrukturelement (<— ???) dieser Klasse zurück
…meint? Hab ich nun ein Objekt meiner Klasse?
Wie auch immer, der dump zeigt die ein objekt der ExtensionEntity-Klasse:
...
object(ProductComposer\Extension\ProductComponentEntity)#2179 (12) {
["components":"ProductComposer\Extension\ProductComponentEntity":private]=>
array(0) { *<========================= leer?*
}
["_uniqueIdentifier":protected]=>
string(32) "3d1e39d16c1341c8b7cb9c514ff4c8b0"
["versionId":protected]=>
NULL
["translated":protected]=>
array(0) {
}
["createdAt":protected]=>
object(DateTimeImmutable)#2198 (3) {
["date"]=>
string(26) "2022-06-13 13:18:42.084000"
["timezone_type"]=>
int(3)
["timezone"]=>
...
Die Zugehörige Klasse:
<?php declare(strict_types=1);
namespace ProductComposer\Extension;
use Shopware\Core\Framework\DataAbstractionLayer\Entity;
use Shopware\Core\Framework\DataAbstractionLayer\EntityIdTrait;
class ProductComponentEntity extends Entity
{
use EntityIdTrait;
private array $components = [];
/**
* @return array
*/
public function getComponents(): array
{
return $this->components;
}
/**
* @param string $idComponent
*/
public function addComponent(string $idComponent): void
{
$this->components[] = $idComponent;
}
}
Und hier meinProblem: die Eigenschaft components
bleibt leer? Warum?