Fehler beim Laden von Artikeln über entityManager->find()

Ich versuche, alle Artikel zu einer Liste von Artikel-IDs zu laden:

$articleIds = [7782, 893, 238923, 3923];

$this->entityManager->getRepository(Article::class)->find($articleIds);

allerdings erhalte ich einen Fehler

Fatal error: Uncaught Doctrine\ORM\ORMException: The identifier id is missing for a query of Shopware\Models\Article\Article

was mach ich denn falsch? 

Leider findet man zu solchen sachen ja keinerlei Dokumentation…

array(“id”=>7782, “id”=> … schon probiert?

@brettvormkopp‍

nein, hab ich nicht probiert.

Im Handbuch steht aber auch das Beispiel mit

$this->entityManager->getRepository(Article::class)->find(78);

also auch ohne „id“ … deshalb bin ich davon ausgegangen, das man es so macht…

 

ps: wie soll „id“=>7782, „id“=>333  denn funktionieren? Ich kann einen Key nicht mehrfach verwenden im Array.

 

EDIT: so funktioniert es:

 $this-\>entityManager-\>getRepository(Article::class)-\>findBy( ["id" =\> [348934, 48934, 48934]] );

 

Aber das ist die findBy-Methode und nicht die find …

ausm Kopf würde mir noch findAll() einfallen.

Edit: Für das Array ist ggf sowas möglich, musste gucken:

array(
    array("id"=>7782),
    array("id"=>893),
    array("id"=>238923),
    array("id"=>3923)
)

 

Wenns auch mit ListProducts reicht, über den Searchbundle. Macht ein eventuelles filtern leichter oder spätere eigene Condition einfachrer

$search = $this->get('shopware_search.product_search');

// nach product IDs
$criteria = new \Shopware\Bundle\SearchBundle\Criteria();
$criteria->addCondition(new \Shopware\Bundle\SearchBundle\Condition\ProductIdCondition([..., ...]));
$products = $search($criteria, $context)->getProducts();

// nach ordernumbers
$criteria = new \Shopware\Bundle\SearchBundle\Criteria();
$criteria->addCondition(new \Shopware\Bundle\SearchBundle\Condition\OrdernumberCondition([..., ...]));
$products = $search($criteria, $context)->getProducts();