[Frage] [Frage] Typo3 - 7.6.4 "INSERT INTO" in eigener Extension ohne DB-Eintrag oder Fehlermeldung

  • eishern eishern
    T3PO
    0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    09. 05. 2016, 08:42

    Guten Morgen liebe Community,

    ich habe seit 2-3 Tagen ein, eigentlich relativ einfaches, Problem. Ich habe eine Extension über den Extension Builder in Typo3 Version 7.6.4 erstellt. Nun greife ich über die Funktion "createAction" des Controllers "ActivityController" auf die Funktion "createNewActivity" das Repositories "ActivityRepository" zu.

    (Funktion [b]createAction[/b] im Controller [b]ActivityController[/b])

    1. public function createAction(\XYZ\crm\Domain\Model\Activity $newActivity)
    2. {
    3. $customer = $this->request->getArgument('customer');
    4. $this->activityRepository->createNewActivity($newActivity->getType(), $newActivity->getContent(), $customer);
    5. //$this->activityRepository->add($newAcitivity);
    6. $this->redirect('list', 'Acitivity', NULL, array('customer' => $customer), NULL, NULL, 303);
    7. }

    (Funktion [b]createNewActivity[/b] im [b]ActivityRepository[/b])

    1. public function createNewActivity($type, $content, $customer) {
    2. $query = $this->createQuery();
    3. $sql = "INSERT INTO tx_crm_domain_model_activity
    4. (pid, customer, type, content) VALUES
    5. (12, 3, 2, 'Content_')";
    6. $query->statement($sql);
    7. $result = $query->execute();
    8. return $result;
    9. }

    Soweit so gut. Nun enthält die Funktion "createNewActivity" im Repository "ActivityRepository" ein INSERT INTO-Query. Jedoch wird dieses nicht ausgeführt. Ich bekomme weder eine Fehlermeldung, noch wird der Eintrag in der Datenbank erstellt. Die Funktion wird korrekt ausgeführt, echos innerhalb der createNewActivity Beispielsweise werden angezeigt.

    Ich weiß, dass die Variante "plain SQL" unter Umständen unsauber ist. Und ich weiß auch, dass die Funktion createNewActivity nicht mit den Übergabeparametern arbeitet. Das ist jedoch dem Umstand verschuldet, dass ich diese als Fehlerquelle ausschließen wollte.

    Könnt ihr mir eventuell helfen und sagen was das Problem ist? Da ich mir keinerlei Fehlermeldung ausgeben lassen kann bin ich relativ ratlos.

    [edit:] Das Query als solchen kann Problemlos direkt auf der DB ausgeführt würden. Demnach ist kein Tippfehler im SQL die Ursache.


  • 1
  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    09. 05. 2016, 11:14

    Ich könnte mir vorstellen, dass in statement() ggf. nur SELECT Queries erlaubt sind. Und da dieser Weg vollkommen unnötig ist und du auch wunderbar und sogar einfacher Objekte mit dem Extbase Repository anlegen kannst, würde ich das gar nicht weiterverfolgen.

    http://www.aemka.de/

  • eishern eishern
    T3PO
    0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    09. 05. 2016, 13:39

    Also ich muss gestehen dass ich nicht viel zu den Extbase Repositories finden kann via google. Zumindest nicht das, was ich benötige. Hast du für mich eventuell einen Wink in die richtige Richtung? Ich wäre dir verbunden.

  • eishern eishern
    T3PO
    0 x
    7 Beiträge
    0 Hilfreiche Beiträge
    11. 05. 2016, 10:33

    Ok, ich habe eine Lösung für das problem gefunden. Anscheinend sind mit statement() wirklich nur SELECTs erlaubt.

    1. public function createNewActivity($type, $content, $customer) {
    2. $values = array(
    3. 'type' => $type,
    4. 'content'=> $content,
    5. 'customer'=> $customer,
    6. );
    7. $query = $GLOBALS['TYPO3_DB']->exec_INSERTquery('tx_crm_domain_model_activity', $values);
    8. $result = $GLOBALS['TYPO3_DB']->sql_query(TYPO3_db, $query);
    9. return $result;
    10. }

    Hiermit lassen sich Einträge in der DB anlegen.

    [edit]Ich kann den "beantwortet"-Button für den Thread nicht finden. Wie markiere ich ihn als beantwortet?

  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    17. 05. 2016, 12:57

    Das ist ziemlich daneben, so was in Extbase Extensions zu machen. Mach es doch lieber richtig - Methode add() brauchst du:
    http://lbrmedia.net/codebase/Eintrag/extbase-query-methods/
    http://mbless.de/blog/2015/03/05/typo3-extbase-query-methods.html

    http://www.aemka.de/

  • 1