2017-02-21 2 views
1

Ich habe auf CakePHP 3.4 aktualisiert und ich überprüfe die 3.4 Ablehnungsliste, die Migrationsanleitung sagt getMatching() muss nach setMatching() aufgerufen werden behalte das alte Verhalten Ich bin verwirrt und konnte keine Dokumentation über die Funktionen setMatching() und getMatching() finden. Wie oder wo soll ich setMatching() deklarieren? Kann jemand mir bitte darauf hinweisen, wie ich den Code unten mit setMatching und getMatching Sie umschreiben:CakePHP 3.4 - Verwendung von setMatching() und getMatching()

TableRegistry::get('Students')->find() 
     ->distinct([ 'Students.id']) 
     ->matching('Studentclassrooms.Classrooms', 
       function ($q) use ($classid){ 
        return $q->where([ 'Classrooms.id' => $classid ]); 
       }); 
     ->enableAutoFields(true); 

Als ich die unten versucht, erhalte ich die Fehler

Unbekannte Methode „setMatching“

TableRegistry::get('Students')->find() 
     ->distinct([ 'Students.id']) 
     ->setMatching('Studentclassrooms.Classrooms', 
       function ($q) use ($classid){ 
        return $q->where([ 'Classrooms.id' => $classid ]); 
       }) 
     ->getMatching() 
     ->enableAutoFields(true); 

Antwort

0

Haben sie einen genaueren Blick auf die Migrationsleitfaden (derzeit nach unten, erscheint mit dem Hoster Fragen zu sein), ist \Cake\ORM\Query::matching() nicht veraltet, es ist \Cake\ORM\EagerLoader::matching() das ist (was wiederum intern in verwendet wird), gibt es keine \Cake\ORM\Query::setMatching()/getMatching() Methoden, aber \Cake\ORM\EagerLoader::setMatching()/getMatching().

Mit getMatching() nach setMatching() nennen ist, weil im Gegensatz zu matching('Alias'), die eine Reihe von Contain zurückkehren wird, wird setMatching('Alias') das passende Material aufgebaut, aber $this stattdessen zurück. Um das Array vorbereiteter Containments zu erhalten, müssten Sie danach getMatching() aufrufen.

Lange Rede kurzer Sinn, nichts in Ihrem Beispiel muss neu geschrieben werden.

+0

Vielen Dank für Ihre Hilfe! – SS86