2017-08-12 8 views
1

以下は私の質問です。私は時間の合計が欲しい。しかし、selectを書くと、関連するモデルのデータは返されません。yii2合計と関連するモデルデータをまとめて

$query = JobPositions::find() 
       ->select(['sum(assign_applicant.hours) as hours']) 
       ->joinWith(['assign','position','shift']) 
       ->groupBy(['position_id','shift_id']); 

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

     $this->load($params); 

以下の行は、上記のクエリから選択行を削除するとデータを返します。

$model->position->name 

私は両方をしたいときに、これに対する解決策は何でしょうか?

答えて

2

explictallyあなたが例えば必要な列を追加してみてください。

$query = JobPositions::find() 
       ->select(['sum(assign_applicant.hours) as hours', 'name']) 
       ->joinWith(['assign','position','shift']) 
       ->groupBy(['position_id','shift_id']); 

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

     $this->load($params); 

または

$query = JobPositions::find() 
       ->select('*, sum(assign_applicant.hours) as hours') 
       ->joinWith(['assign','position','shift']) 
       ->groupBy(['position_id','shift_id']); 

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

感謝。最初のオプションを選んだ – Ish

関連する問題