Hi, ich würde gerne in meinem Plugin alle Artikel aus der DB holen die einen Bestand haben. Ich benötige Daten wie: Name, Ordernumber, Preis, Bilder, usw… Momentan löse ich das so: $sql = "SELECT DISTINCT `articleID` FROM `s_articles_details` WHERE instock\>0"; $articles = Shopware()-\>Db()-\>fetchAll($sql); foreach ( $articles as $sArticle ) { $article = Shopware()-\>Modules()-\>Articles()-\>sGetArticleById($sArticle['articleID']); }
Das dauert jedoch ewig (mehr als 5 Minuten!) und meistens bricht der Server das Script ab. Wie kann ich das schneller bzw. einfacher bewerkstelligen? Gibt es dafür vielleicht schon eine Funktion in der API? Gruß und Danke
[quote=„Skyflash“]Hi, ich würde gerne in meinem Plugin alle Artikel aus der DB holen die einen Bestand haben. Ich benötige Daten wie: Name, Ordernumber, Preis, Bilder, usw… Momentan löse ich das so: $sql = "SELECT DISTINCT `articleID` FROM `s_articles_details` WHERE instock\>0"; $articles = Shopware()-\>Db()-\>fetchAll($sql); foreach ( $articles as $sArticle ) { $article = Shopware()-\>Modules()-\>Articles()-\>sGetArticleById($sArticle['articleID']); }
Das dauert jedoch ewig (mehr als 5 Minuten!) und meistens bricht der Server das Script ab. Wie kann ich das schneller bzw. einfacher bewerkstelligen? Gibt es dafür vielleicht schon eine Funktion in der API? Gruß und Danke[/quote] Hey, ist die Foreach Schleife zwingend notwenig? Wenn du die weg lässt, sollest du doch die Werte auch in $articles[0][articleID], $articles[1][articleID], $articles[2][articleID] etc. Oder hab ich was falsch verstanden?
Hey, danke für deine Antwort! Du hast vollkommen Recht doch was nützt mir das? EDIT: Vielleicht noch wichtig zu wissen: SELECT DISTINCT `articleID` FROM `s_articles_details` WHERE instock\>0
Die Abfrage iefert mir 2088 “verschiedene” IDs. Soll heissen es wird 2088 mal sGetArticleById() aufgerufen. Güße
Wie meinst du das, was nützt dir das? Stehe auf dem Schlauch Du hast doch dann eine Schleife weniger und solltest etwas Zeitersparnis haben. (Sicher bin ich voll auf dem Holzweg)
Also wenn ich die Schleife auflöse müsste ich ja sGetArticleById() “manuell” aufrufen damit ich die Artikeldaten erhalte. Und das 2088 mal! Da nehm ich lieber die Schleife ;-). Also die Logik sieht momentan so aus: 1. Die SQL Abfrage holt “nur” die articleID von den Artikeln ab die einen Bestand haben. 2. Die Schleife läuft jetzt jede articleID durch und holt Bilder, Namen, Preise, usw. zu der jeweiligen articleID ab. Dieser Vorgang dauert einfach viel zu lange.
[quote=“Skyflash”]Also wenn ich die Schleife auflöse müsste ich ja sGetArticleById() “manuell” aufrufen damit ich die Artikeldaten erhalte. Und das 2088 mal! Da nehm ich lieber die Schleife ;-). Also die Logik sieht momentan so aus: 1. Die SQL Abfrage holt “nur” die articleID von den Artikeln ab die einen Bestand haben. 2. Die Schleife läuft jetzt jede articleID durch und holt Bilder, Namen, Preise, usw. zu der jeweiligen articleID ab. Dieser Vorgang dauert einfach viel zu lange.[/quote] Sorry, irgendwie hatte ich einen Denkfehler… Dachte du holst dir über getArticle nur die ID^^ Ich bin schon still und gehe meiner eigenen Arbeit nach
hihi…kein Problem. Trotzdem vielen Dank
Ich habe jetzt sGetArticleById() durch meine eigenen Abfragen ersetzt und die Exportzeit beträgt nur noch 5 Sekunden. Warhscheinlich hatte die Shopwarefunktion einfach zu viele Daten abgeholt.