FloC3
1
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?
FloC3
3
@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();