Repository aus anderem Domain Model ansprechen ??? [Gelöst]

  • mimaxx mimaxx
    Jedi-Ritter
    0 x
    144 Beiträge
    1 Hilfreiche Beiträge
    23. 08. 2012, 13:22

    Hallo,

    möchte gern aus einer Action heraus eine Repository ansprechen aus einem anderem Domain Model

    Im Controller habe ich die Repository folgendermaßen eingenunden

    1. /**
    2. * @var Tx_MyExt_Domain_Repository_CheckListsRepository
    3. */
    4. protected $checkListsRepository;
    5.  
    6. /**
    7. * initializeAction
    8. *
    9. * @return
    10. */
    11. protected function initializeAction() {
    12. $this->checkListsRepository =& t3lib_div::makeInstance('Tx_MyExt_Domain_Repository_CheckListsRepository');
    13. }

    in der Action rufe ich sie so auf

    1. /**
    2. * action new
    3. *
    4. * @param Tx_MyExt_Domain_Model_Checks $newChecks
    5.   * @param Tx_MyExt_Domain_Model_Artikel $artikel
    6. * @dontvalidate $newChecks
    7. * @return void
    8. */
    9. public function newAction(Tx_MyExt_Domain_Model_Checks $newChecks = NULL, Tx_MyExt_Domain_Model_Artikel $artikel = NULL) {
    10. $this->view->assign('newChecks', $newChecks);
    11. $this->view->assign('artikel', $artikel);
    12. $this->view->assign('checklists', $this->checkListsRepository->findCheckListByArtikelId($artikel));
    13. #$this->view->assign('checklists', $this->checkListsRepository->findAll());
    14. }

    nehme ich du auskommentierte Variante mit findAll() klappt alles bei der eigenen Funktion kommt der Fehler

    [color=red]
    #1: PHP Catchable Fatal Error: Argument 1 passed to Tx_Extbase_Persistence_Storage_Typo3DbBackend::parseConstraint() must implement interface Tx_Extbase_Persistence_QOM_ConstraintInterface, instance of Tx_Extbase_Persistence_Query given, called in /var/www/typo3_src-4.7.2/typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php on line 317 and defined in /var/www/typo3_src-4.7.2/typo3/sysext/extbase/Classes/Persistence/Storage/Typo3DbBackend.php line 500 (More information)
    [/color]

    Die Repository sieht so aus. Habe da erstmal einen Testwert reingeschrieben.

    1. /**
    2. * Finds Checklist by Artikelnr.
    3. *
    4. * @return array Matched offers
    5. */
    6.  
    7. public function findCheckListByArtikelId (Tx_MyExt_Domain_Model_Artikel $artikel) {
    8.  
    9. $newID = 0116;
    10.  
    11. $query = $this->createQuery();
    12. $query->equals('werkzeugId', $newID);
    13. return $query->matching($query)
    14. ->execute();
    15.  
    16. }

    Woran kann das liegen?

    Gruß
    mimaxx


  • 1
  • LuP LuP
    Jedi-Meister
    0 x
    496 Beiträge
    1 Hilfreiche Beiträge
    23. 08. 2012, 13:46

    Hallo,

    $query ist von Typ Tx_Extbase_Persistence_Query. $query->equals() ist vom Typ Tx_Extbase_Persistence_QOM_ComparisonInterface die wiederum Tx_Extbase_Persistence_QOM_ConstraintInterface implementiert.

    Richtig wäre es gewesen:

    1. - $query->equals('werkzeugId', $newID);
    2. return $query->matching(
    3. - $query
    4. + $query->equals('werkzeugId', $newID)
    5. )->execute();

    VG,
    LuP

  • mimaxx mimaxx
    Jedi-Ritter
    0 x
    144 Beiträge
    1 Hilfreiche Beiträge
    23. 08. 2012, 13:48

    Nu gehts tztztz zumindest mit dem Testwert mal sehen was noch so kommt :-) ...

    1. $newID = '0116';
    2.  
    3. $query = $this->createQuery();
    4. return $query->matching($query->equals('werkzeugId', $newID))->execute();

  • mimaxx mimaxx
    Jedi-Ritter
    0 x
    144 Beiträge
    1 Hilfreiche Beiträge
    23. 08. 2012, 13:50

    Oh super vielen Dank für die Antwort! Hatte es tatsächlich zeitgleich herausgefunden!

    Gruß
    mimaxx

  • 1