[Frage] Laden eines Datensatzes nach einer query für ein update [Gelöst] TYPO3-Version: 7.6.23

  • hiety hiety
    T3PO
    0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    06. 01. 2018, 21:53

    Hallo zusammen,

    hab mal wieder ein Brett vor dem Kopf und freue mich über Hilfe.

    Ich rufe mit

    https://domain.de/extension/?tx_extension_extension[action]=verify&tx_extension_extension[controller]=Extension&tx_extension_extension[authCode]=Authentisierungscode&tx_extension_extension[authMail]=name@domain.tld

    meine Extension auf. Per Datenbankabfrage im Controller

    $result = $this->extensionRepository->findMyUid($this->request->getArgument('authCode'),$this->request->getArgument('authMail'));

    bzw Repository

    /**
    *
    * @param string $authCode
    * @param string $authMail
    */
    public function findMyUid($authCode, $authMail)
    {
    // Query aufbauen
    $query = $this->createQuery();
    $query->getQuerySettings()->setIgnoreEnableFields(true)->setIncludeDeleted(true);
    $query->matching(
    $query->logicalAnd(
    $query->like('verificationcode',$authCode),
    $query->like('email',$authMail),
    $query->like('deleted','0')
    )
    );
    $result = $query->execute();
    return $result;
    }

    bekomme ich auch einen String mit der gewünschten UID (hier z.B. 38) zurück im Format

    Vendor\Extension\Domain\Model\Name:38

    Nur schaffe ich es nicht, mit dieser Info aus der Datenbank heraus ein Array zu laden, damit ich es
    a) im Fluid/Extbase weiter verwenden kann (z.B. im Template als {variablenname.username}, oder im Controller/Repository)

    b) mit z.B. $variablenname->setHidden('0');
    $this->extensionRepository->update($variablenname);
    den Datenbankeintrag verändern kann.

    Was muss ich dazu noch tun? Ist bestimmt mal wieder eine Kleinigkeit...

    Danke für Eure Hilfe
    hiety

  • hiety hiety
    T3PO
    0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    07. 01. 2018, 11:31 - Lösung

    Hat sich erledigt. Ich hatte angenommen, dass das Array als return mit allen Inhalten zurückkommt, wenn sich genau ein Datensatz findet, und nicht nur die UID.

    Mit

    $uid = explode(':',$result[0]);
    $variablenname = $this->extensionRepository->findByUid($uid[1]);

    konnte ich dann die eigentlichen Inhalte nachladen und wie gewünscht verarbeiten. Geht bestimmt auch eleganter, tut aber erst mal was es soll.


  • 1
  • hiety hiety
    T3PO
    0 x
    11 Beiträge
    0 Hilfreiche Beiträge
    07. 01. 2018, 11:31

    Hat sich erledigt. Ich hatte angenommen, dass das Array als return mit allen Inhalten zurückkommt, wenn sich genau ein Datensatz findet, und nicht nur die UID.

    Mit

    $uid = explode(':',$result[0]);
    $variablenname = $this->extensionRepository->findByUid($uid[1]);

    konnte ich dann die eigentlichen Inhalte nachladen und wie gewünscht verarbeiten. Geht bestimmt auch eleganter, tut aber erst mal was es soll.

  • 1