2017-02-21 64 views
1

Я обновил до CakePHP 3.4, и я проверяю список исключений 3.4, руководство по миграции говорит, что getMatching() нужно будет вызывать после setMatching() для сохранить прежнее поведение Я запутался и не смог найти документацию по образцу в функциях setMatching() и getMatching(). Как и где следует объявлять setMatching(). Может кто-нибудь, пожалуйста, указать мне, как я могу переписать приведенный ниже код, используя setMatching и getMatching:Cakephp 3.4 - Использование setMatching() и getMatching()

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

Когда я попытался ниже, я получаю ошибку

Неизвестный метод «setMatching»

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

ответ

0

поближе взглянуть на руководстве по миграции (в настоящее время вниз, по-видимому, проблемы с хостером), \Cake\ORM\Query::matching() не рекомендуется, это \Cake\ORM\EagerLoader::matching(), который (в свою очередь, используется внутри в \Cake\ORM\Query::matching()), нет \Cake\ORM\Query::setMatching()/getMatching() методов, но \Cake\ORM\EagerLoader::setMatching()/getMatching().

Имея позвонить getMatching() после setMatching() происходит потому, что в отличие от matching('Alias'), который возвращает массив из защитных оболочек, setMatching('Alias') будет создан соответствующий материал, но вернуться $this вместо этого. Поэтому, чтобы получить массив подготовленных сдерживаний, вам нужно будет позвонить getMatching() после этого.

Короче говоря, ничто в вашем примере не нужно переписывать.

+0

Благодарим за помощь! – SS86

 Смежные вопросы

  • Нет связанных вопросов^_^