-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Hallo zusammen.
Wenn es darum geht, jetzt sofort weitermachen zu können ist der Zusammenfassung von Jorinde wenig hinzuzufügen, ich hätte in allen Punkten ähnliches gesagt. Damit kannst Du programmieren ohne auf die Nase zu fallen. Allerdings gibt es die Konvention, dass das Repository "ein Objekt" liefert (oder NULL wenn dieses Objekt nicht gefunden werden konnte) wenn die Methode mit "findOne" beginnt. Du schreibst zum Beispiel einfach "$userRepository->findOneByEmail($email)". Die "findOneBy.*"-Methoden sind im trivialen Fall mit einem Argument nicht mal selbst zu implementieren sondern "magic" des Persistence\Repository, das macht das automatisch. Um jetzt wieder auf Dein Problem zurückzukommen: Wenn Deine Methode "kein oder ein" Objekt liefern soll aber nie mehrere, wäre es angebracht, * die Methode auch "findOne.*" zu nennen (optional und Geschmackssache) und * die Implementierung dahingehend zu ändern dass der Rückgabewert dem auch entspricht (eigentlich relevanter, um den gleichen Code nicht an mehreren Stellen schreiben zu müssen). https://typo3.org/api/typo3cms/class_t_y_p_o3_1_1_c_m_s_1_1_extbase_1_1_persistence_1_1_repository.html#a6ca24d0cc830839104a34951755a1f27 https://typo3.org/api/typo3cms/extbase_2_classes_2_persistence_2_repository_8php_source.html#l00290 https://gist.github.com/anonymous/492f785e616fc065a199 Es geht dabei also im Wesentlich um die Einhaltung von Konvention: * "findBy" findet eine beliebige Anzahl (gerne auch 0), * "findOneBy" findet genau eines (bzw. NULL) * darauf sollte man sich verlassen können. Du *darfst* das natürlich nach Deinem Geschmack anders machen. Allerdings vereinfacht man sich das Leben ungemein, wenn man den eigenen Code nach den Konventionen des verwendeten Frameworks formuliert. Gruß, Stephan Schuler Web-Entwickler | netlogix Media Telefon: +49 (911) 539909 - 0 E-Mail: stephan.schu...@netlogix.de Web: media.netlogix.de netlogix GmbH & Co. KG IT-Services | IT-Training | Media Neuwieder Straße 10 | 90411 Nürnberg Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99 E-Mail: i...@netlogix.de | Web: http://www.netlogix.de netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338) Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634) Umsatzsteuer-Identifikationsnummer: DE 233472254 Geschäftsführer: Stefan Buchta, Matthias Schmidt - -----Ursprüngliche Nachricht----- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Jorinde Milde Gesendet: Montag, 27. April 2015 08:22 An: German TYPO3 Userlist Betreff: Re: [TYPO3-german] if ($object) ist immer TRUE Hallo Ralf-Rene, ich bilde mir ein, dass ein Repository immer ein Objekt "QueryResult" zurück liefert. Dieses müsste dann darauf getestet werden, ob es leer ist. Zum Beispiel: if ($existingLiveDialog->count() !== 0) { ... Außerdem beinhaltet ein QueryResult Objekt und nicht nur die IDs zu diesen Objekten. Um also die ID irgendwohin zu schreiben, musst du dir diese auch erst holen: $existingLiveDialog->getUid(); Bzw. wenn $existingLiveDialog noch ein QueryResult ist: $existingLiveDialog->getFirst()->getUid(); Mit freundlichen Grüßen Jorinde Milde M.Sc. Jorinde Milde Web Development 599media GmbH Platz der Oktoberopfer 5 09599 Freiberg Tel.: 03731 / 41 939 - 42 Fax: 03731 / 41 939 - 59 http://www.599media.de jorinde.mi...@599media.de Geschäftsführer: Jens Engelmann Sitz der Gesellschaft: Freiberg HR: AG Chemnitz HRB 24695 - -----Ursprüngliche Nachricht----- Von: typo3-german-boun...@lists.typo3.org [mailto:typo3-german-boun...@lists.typo3.org] Im Auftrag von Ralf-Rene Schröder Gesendet: Montag, 27. April 2015 02:28 An: typo3-german@lists.typo3.org Betreff: [TYPO3-german] if ($object) ist immer TRUE hallo... ich habe in einer create action zwei Probleme... vielleicht sieht ja jemand meinen Fehler ??? // meine Fragen und Probleme sind im Kommentar geschrieben /** * action create * @param \Vendor\Ext\Domain\Model\LiveDialog $newLiveDialog * @return void */ public function createAction(\Vendor\Ext\Domain\Model\LiveDialog $newLiveDialog) { $twin = $newLiveDialog->getTwin(); $ptwin = $newLiveDialog->getPartnertwin(); $existingLiveDialog = $this->liveDialogRepository->findExistingLiveDialog($twin, $ptwin); // 1.) das folgende wird trotz if IMMER augeführt ??? warum ??? // 2.) wenn ich die 4 durch das gewollte $existingLiveDialog ersetze // bekomme ich den Fehler dass es ein Object und kein String ist ??? // ich will, wenn der Dialog schon existiert ihn nur direkt anzeigen, // andernfalls ihn und seinen PartnerDialog (vertauschte Werte) anlegen. if ($existingLiveDialog) { $this->redirect('show','LiveDialog',Null,array('liveDialog' => 4)); } $this->liveDialogRepository->add($newLiveDialog); // hier die Frage ob es keine einfachere Methode gibt // einen kreuzweise 1:1 verknüpften Datensatz zu erstellen ??? // das hier funktioniert zwar, aber irgendwie finde ich es nicht schön. $this->persistenceManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance("TYPO3\\CMS\\Extbase\\Persistence\\Generic\\PersistenceManager"); $this->persistenceManager->persistAll(); $newLivePartnerDialog = new \imF\Nr\Domain\Model\LiveDialog(); $newLivePartnerDialog->setTwin($ptwin); $newLivePartnerDialog->setPartnertwin($twin); $newLivePartnerDialog->setPartnerDialog($newLiveDialog); $this->liveDialogRepository->add($newLivePartnerDialog); $this->persistenceManager->persistAll(); $newLiveDialog->setPartnerDialog($newLivePartnerDialog); $this->liveDialogRepository->update($newLiveDialog); $this->persistenceManager->persistAll(); $this->redirect(...); } _____________________________________________________________________ hier noch das genutzte Repository, liefert kein oder genau ein Ergebnis: /** * * @return array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface */ public function findExistingLiveDialog($twin, $ptwin) { $query = $this->createQuery(); $query->matching( $query->logicalAnd( $query->equals('twin', $twin), $query->equals('partnertwin', $ptwin) ) ); return $query->execute(); } - -- image[FORMAT] - Ralf-René Schröder http://www.image-format.eu ... Wir geben Ihrem Image das richtige Format _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german -----BEGIN PGP SIGNATURE----- Version: PGP Universal 3.3.2 (Build 15704) Charset: utf-8 wpUDBQFVPh+jpp0IwsibV8MBCKrZA/9e7XPBzAPn6vPkTjJe8UCp249f7J7L80BH G6wBQv5IHuJEHl0rNkKXfMvDv2SqXWbvzCBHW4j+1lM+PG5EJKn3v4HMN9w9lD9Z 4n41H+zD+QFD0L9GBjNQVLmtQEggxfpDDFTy/lHcfwN0W+/hr4vUld80VINHBO90 uqqCX4ow9g== =/TIx -----END PGP SIGNATURE----- _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german