2017-02-22 50 views
0

問題很混亂,但我會解釋。 我在PlanificacionController.phpAsistenciaSearch.php如何在Yii 2中將過濾器從一個搜索模型合併到控制器中的一個findModel?

public function search($params) 
    { 
     $query = Asistencia::find(); 

     // add conditions that should always apply here 

     $dataProvider = new ActiveDataProvider([ 
      'query' => $query, 
     ]); 

     $this->load($params); 

     if (!$this->validate()) { 
      // uncomment the following line if you do not want to return any records when validation fails 
      // $query->where('0=1'); 
      return $dataProvider; 
     } 

     $query->joinWith('rutAlumno0'); 
     $query->joinWith('idPlanificacion0'); 

     // grid filtering conditions 
     $query->andFilterWhere([ 
      'idAsistencia' => $this->idAsistencia, 
      //'idPlanificacion' => $this->idPlanificacion, 
     ]); 

     $query->andFilterWhere(['like', 'asistencia', $this->asistencia]) 
      ->andFilterWhere(['like', 'rutAlumno', $this->rutAlumno]) 
      //->andFilterWhere(['like', 'idPlanificacion', $this->idPlanificacion]) 
      ->andFilterWhere(['like', 'alumno.nombreAlumno', $this->nombreAlumno]) 
      ->andFilterWhere(['like', 'alumno.apellidoAlumno', $this->apellidoAlumno]) 
      ->andFilterWhere(['like', 'alumno.cursoAlumno', $this->cursoAlumno]) 
      ->andFilterWhere(['like', 'alumno.establecimientoAlumno', Yii::$app->user->identity->escuelaProfesor]); 


     return $dataProvider; 
    } 

使用搜索查詢該搜索查詢而這個控制器功能:

public function actionVerasistencia($id) 
    { 
     $searchModel = new AsistenciaSearch(); 
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

     return $this->render('verasistencia', [ 
      'model' => $this->findModel($id), //findModel from Planificacion 
      'searchModel' => $searchModel, 
      'dataProvider' => $dataProvider, 
     ]); 
    } 

兩個ASISTENCIA和Planificacion通過在Planificacion使用主鍵相關的命名idPlanificacion和在Asistencia使用相同名稱的該模型的外鍵。 現在的問題是,我需要與其他過濾器,其中來自findModel($ ID)的$ id爲像$ idPlanificacion來自搜索查詢,這樣的合併:

public function actionVerasistencia($id) 
    { 
     $searchModel = new AsistenciaSearch(); 
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

     return $this->render('verasistencia', [ 
      'model' => $this->findModel($id), 
      'searchModel' => $searchModel, 
      'dataProvider' => $dataProvider->andFilterWhere('like',$id,$this->idPlanificacion), 
     ]); 
    } 

但我得到這個錯誤:

Getting unknown property: frontend\controllers\PlanificacionController::idPlanificacion 

任何解決方案,請?

回答

1

$這個控制器內部相關的控制器本身 但你指的是idPlanificacion別名你指的是一個模型屬性

可能是你想retrive通過模型例如值:

$model = $this->findModel($id) 

因此可能是

public function actionVerasistencia($id) 
    { 
     $searchModel = new AsistenciaSearch(); 
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 

     $model = $this->findModel($id); 
     return $this->render('verasistencia', [ 
      'model' =>$model, 
      'searchModel' => $searchModel, 
      'dataProvider' => $dataProvider->andFilterWhere('like',$id,$model->idPlanificacion), 
     ]); 
    } 
相關問題