2017-08-16 5 views
0

Dans cet exemple du livre:données Extraction de tables d'habitude et se joindre à CakePHP 3.5

https://book.cakephp.org/3.0/en/orm/associations.html#using-the-through-option

class StudentsTable extends Table 
{ 
    public function initialize(array $config) 
    { 
     $this->belongsToMany('Courses', [ 
      'through' => 'CoursesMemberships', 
     ]); 
    } 
} 

class CoursesTable extends Table 
{ 
    public function initialize(array $config) 
    { 
     $this->belongsToMany('Students', [ 
      'through' => 'CoursesMemberships', 
     ]); 
    } 
} 

class CoursesMembershipsTable extends Table 
{ 
    public function initialize(array $config) 
    { 
     $this->belongsTo('Students'); 
     $this->belongsTo('Courses'); 
    } 
} 

je peux voir la liste des cours liés à chaque élève les étudiants/view/N parce que Je le code suivant dans le StudentsController:

public function view($id = null) 
    { 
     $student = $this->Students->get($id, [ 
      'contain' => ['Cources'] 
     ]); 

     $this->set('student', $student); 
     $this->set('_serialize', ['student']); 

    }  

Si je remplace Cours par CoursesMemberships là-bas:

public function view($id = null) 
    { 
     $student = $this->Students->get($id, [ 
      'contain' => ['CoursesMemberships'] 
     ]); 

     $this->set('student', $student); 
     $this->set('_serialize', ['student']); 

    }  

et apporter les modifications correspondantes dans Students/view.ctp, je peux voir la liste des CoursesMemberships connexes.

Comment voir les deux? Je veux dire, ce qui devrait être dans StudentsController afin que je puisse voir dans la même vue (mieux dans la même table) pour chaque étudiant à la fois, les cours liés et jours_attended et note?

Répondre

0

Utilisez la première variante, c'est-à-dire contenir Courses, les données de la table de jointure seront disponibles dans la propriété Course entités _joinData.

$course->_joinData->days_attended 
$course->_joinData->grade 
+0

Merci beaucoup! Cela fonctionne vraiment maintenant. –

+0

Y at-il un moyen d'ajouter, afficher, modifier et supprimer de ce tableau 'CoursesMemberships' en utilisant le code généré par Cake? Index fonctionne, il liste toutes les entrées correctement, le reste finit par donner le 'InvalidPrimaryKeyException'. –