Alle Hersteller eine Subshops anzeigen lassen

Hi, momentan hole für ein Plugin alle unsere Hersteller mit folgendem Code ab: // Hersteller $sql = " SELECT s.id, name FROM `s_articles_supplier` AS s WHERE ( SELECT a.id FROM s\_articles a WHERE a.supplierID = s.id LIMIT 1 ) ORDER BY name "; $sSearchSuppliers = Shopware()-\>Db()-\>fetchAll($sql); Jetzt ist jedoch ein Subshop hinzugekommen, welcher komplett andere Ware und somit auch komplett andere Hersteller beinhaltet. Nun möchte ich bei der Abfrage diese Hersteller Filtern. Soll heissen, dass im Subshop auch nur die Hersteller die im Subshop verwendet werden angezeigt werden sollen. Jemand eine Idee wie das gehen könnte? Gibt es vielleicht schon eine Funktion dafür in der API? Vielen Danke für jede Hilfe! Wir nutzen momentan Shopware 3.5.3

Niimand eine Idee?

Hey, also von der Logik her muss es anderst Laufen. Da in deiner bisher verwendeten Tabelle ja keinerlei Info zur Subshop vorhanden ist. Du müsstest alle Artikel abfragen, welche in den Kategorien des verwendeten Subshops angezeigt werden und vom Artikel dann auf die Hersteller verlinken. In der Tabelle s_articles_categories hast du die Zuordung der Artikel zu den Kategorien. Jetzt muss man nur noch herausfinden, welche Kategorien für welche Subshops stehen. Das steht in einer anderen Tabelle. Ich habe hier auf meiner Testumgebung aber leider keine Subshops und kann dir hier nicht weiterhelfen.

Danke für deine Antwort. Jop das habe ich mir auch gedacht, doch irgendwie habe ich noch einen Funken Hoffnung, dass es bereits eine API Funktion dafür gibt. Für die Kategorien gibt es das schliesslich auch ;-).

Ok habe es nun selbst per SQL Abfragen gemacht. Danke trotzdem für alle Antworten.

Und wie genau? Anderen Usern ist bestimmt damit geholfen :wink:

Der Code ist zwar ziemlich unsauber aber für meine Zwecke genügt es vorerst. Ist halt keine „Community“ Lösung :wink: . // Hersteller function multisort($array, $sort\_by, $keys) { foreach ($array as $pos =\> $val) $tmp\_array[$pos] = $val[$sort\_by]; asort($tmp\_array); foreach ($tmp\_array as $pos =\> $val) { $return\_array[$pos][$sort\_by] = $array[$pos][$sort\_by]; if(is\_array($keys)) { foreach($keys as $k) $return\_array[$pos][$k] = $array[$pos][$k]; } else $return\_array[$pos][$keys] = $array[$pos][$keys]; } return $return\_array; } $shop = Shopware()-\>Shop()-\>getId(); $sql = "SELECT DISTINCT parentID FROM s\_core\_multilanguage WHERE id='".$shop."'"; $shopcatid = Shopware()-\>Db()-\>fetchOne($sql); $sql = "SELECT DISTINCT articleID FROM s\_articles\_categories WHERE categoryparentID='".$shopcatid."'"; $shoparticles = Shopware()-\>Db()-\>fetchAll($sql); $i=0; $sSearchSuppliers = array(); foreach ($shoparticles as $key =\> $a) { $i++; $sql = "SELECT DISTINCT supplierID FROM s\_articles WHERE id='".$a['articleID']."'"; $supplierid = Shopware()-\>Db()-\>fetchOne($sql); $sql = "SELECT DISTINCT id, name FROM s\_articles\_supplier WHERE id='".$supplierid."'"; $supplier = Shopware()-\>Db()-\>fetchAll($sql); $isthere = false; foreach ($sSearchSuppliers as $key2 =\> $a2) { if ($a2['name']==$supplier[0]['name']) { $isthere = true; } } if ($isthere==false and $supplier[0]['name']!="") { $sSearchSuppliers[$i]['id']= $supplier[0]['id']; $sSearchSuppliers[$i]['name']= $supplier[0]['name']; } } $sSearchSuppliers = multisort($sSearchSuppliers, 'name',array('id','name')); $view-\>sSearchSuppliers = $sSearchSuppliers; Eine Forenkategorie mit Codeschnipseln währe toll :smiley: .