Datenbankabfrage per EL beeinflussen

  • Hallo,

    ich bin gerade dabei ja den Blog etwas zu erweitern.

    Nun müsste ich die Datenbankabfrage von den Blogeinträgen etwas ergänzen.

    Nur nun frage ich mich wie ich das ganze per EL machen soll.

    Wenn ich bei readData eingreife wird der EL ja zu früh ausgelöst. Greife ich nach readData ein ist die Datenbankabfrage ja die ->readObjects schon ausgeführt.

    Wie kann ich den nun hier eingreifen?

    Gruß Alex

  • Ich habe jetzt keine Klasse mit einem EventHandler gefunden.

    Die einzige Möglichkeit die ich jetzt sehe ist das man z.B. bei assignVariables@\blog\page\BlogPage folgendes in dem EL einfügt


    Bzw du kannst natürlich auch einfach es so machen

    Code
    //dein Code der etwas verändern soll
    $eventObj->entryList->readObjects();


    Dann werden die Objecte auch neu geladen ;)


    Und dann an der Passenden stelle einfach verändert, wäre zwar jetzt zwei Abfragen aber anders sehe ich das im moment nicht möglich.

  • Also sobald ich readObject erneut ausführe bekomme ich alles doppelt angezeigt.
    Also das geht auch nicht wirklich.

    Hier mein Code den ich in den EL eingefügt habe.


    Code
    if(!WCF::getUser()->userID) {
                   $eventObj->entryList->getConditionBuilder()->add('entry.showOnlyFriends = ?', array('0'));
                }else{
                  $eventObj->entryList->getConditionBuilder()->add("entry.showOnlyFriends = ? OR (entry.showOnlyFriends = ? AND entry.userID IN (SELECT userID FROM wcf".WCF_N."_user_follow WHERE followUserID = ?) OR (entry.showOnlyFriends = ? AND entry.userID = ".WCF::getUser()->userID."))", array('0', '1', WCF::getUser()->userID, '1'));
                }
    
                $eventObj->entryList->readObjects();

    Gruß Alex

    Einmal editiert, zuletzt von Griborim (16. Juli 2014 um 13:20)

  • Das hab ich nun ergänzt, nun bekomme ich aber dafür folgende Meldung.

    Zitat

    Fatal error: PHP notice in file
    D:\Programme\xampp\htdocs\test\wcf\lib\data\DatabaseObjectList.class.php
    (296): Undefined offset: 2


    Was aber damit zusammenhängt das der Eintrag was angezeigt wird durch meine Abfrage nicht angezeigt werden soll.

    Mache ich meine Abfrage weg wird immernoch alles doppelt angezeigt, also das mit dem leeren scheint nicht so ganz zu klappen

    Gruß Alex

  • Ok warum alles doppelt kommt liegt an indexToObject nur das ganze ist ja protected.

    @WoltLab gibt es noch eine andere möglichkeit das ganze zu beeinflussen, wie den ganzen code doppelt auszuführen.

    Gruß Alex

  • Instanziier das gesamte Objekt doch einfach neu.

    "A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP" — Leonard Nimoy

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!