2014-09-14 5 views
0

J'ai une configuration de test qui implique de nombreuses relations. Ce que j'essaye de faire est de rediriger le formulaire de mise à jour d'étudiant à la vue de grille parentale. Je souhaite afficher les enregistrements parent des étudiants associés uniquement dans la vue Grille des parents.Yii2 - Données filtrées en grille Voir

par exemple requête mysql pour montrer l'enregistrement lié est comme ceci:

SELECT s.id, s.name, p.id, p.name 
FROM `students` s, parents p, student_parent sp 
WHERE s.id = sp.student_id 
AND p.id = sp.parent_id 
AND s.id =102 

et dans le contrôleur je pourrais trouver le même dossier comme celui-ci quand on utilise les données de l'étudiant avec l'id de 102

$model2 = Students_Parents::find() 
      ->where(['student_id' => $model->id]) 
      ->all(); 

mon code de redirection dans le contrôleur que je suis en train de faire est:

if(isset($_POST['parents'])){ 
        return $this->redirect(['parents/index','id'=>$model2]); 
      } 

ici, le formulaire redirige correctement, mais aucun filtre n'est appliqué. Comment puis-je incorporer la requête dans la redirection afin que j'obtienne les données liées uniquement dans GridView.

Merci

+0

Dans 'return $ this-> redirect ([ 'les parents/index', 'id' => $ model2]); '- quelle est la valeur de' $ model2'? Est-ce un nombre entier? –

+0

@KunalDethe - Oui c'est, c'est la valeur de l'ID – Joshi

Répondre

3

Vous devez définir dans la redirection du nom de l'entrée du filtre comme la clé, comme:

$this->redirect(['parents/index','StudentSearch[id]'=>2]); 
Questions connexes