Hallo, ich habe ein Plugin erstellt, welches einen Cronjob installiert, der wiederum eine Datenbankabfrage laufen lassen soll. Leider funktioniert irgendwas nicht. Der Cron steht derzeit auf 2 Minuten, wenn ich Ihn manuell ausführe über /backend/cron, dann steht dort zwar “Processing SetVariantAktive” aber es passiert nichts. Hier der Code private function registerEvents() { $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Index', 'onPostDispatchFrontend' ); } private function registerCronJobs() { $this-\>subscribeEvent( 'Shopware\_CronJob\_SetActive', 'onRunSetActiveCronJob' ); $this-\>createCronJob( 'SetActive', 'SetActiveCron', 900, true ); } public function onRunSetActiveCronJob(\Shopware\_Components\_Cron\_CronJob $job) { //first we have to get the current active slogan $sql= "UPDATE `db-sandbox`.`s_articles_details` SET `active` = '1' WHERE `s_articles_details`.`instock` \> 10"; Shopware()-\>Db()-\>fetchAll($sql); }
Kann mir da jemand helfen, bin noch neue in dieser Programmierung
Versuch es einmal so: private function registerCronJobs() { $this-\>subscribeEvent( 'Shopware\_CronJob\_SetActive', 'onRunSetActiveCronJob' ); $this-\>createCronJob( 'SetActive', 'SetActive', 900, true ); }
Gruß
Hallo, super, das funktioniert schonmal. Der SQL Befehl wird ausgeführt, dann gibt es allerdings einen Fehler, der den Cronjob auch deaktiviert: array ( 'error' =\> 'SQLSTATE[HY000]: General error', )
Was ist da wieder los? Finde leider bei Google keine passenden Hilfsmethoden.
Du musst Return true; zurück liefern.
und anstatt fetchAll() query() verwenden. Dann sollte es funktionieren Gruß
Ah, ich verstehe. Super, das funktioniert! Vielen Dank!