2016-08-25 7 views
1

は、私は3つのテーブルが最大の表の設定から取られた12日を残す各従業員が持っているこの

設定された最大休暇従業員3つのテーブル

Employee Table 
id | EmpId | Name |  
1 | N1 | A | 
2 | N2 | B | 
3 | N3 | C | 

Leave Table 
id | EmpId | applydate | startdate | daysleave | reason | status | 
1 | N2 | 2016-08-25 | 2016-08-25 |  4  | vacation | Approved | 

Setting Table 
id | var | val | valdef | status | 
1 | MaxLeave | 12 | 12 | 1 | 

のように見えています。
daysleave = 4の場合、maxleaveは8日後になります。 私はそれをどのようにしましたか?Employee Tableに新しいフィールドを追加する必要がありますか?期待
結果:あなたが作成することができます Result Expected

+0

従業員の残り日数を表示したいとお考えですか?可能であれば期待通りの結果を与えてください –

+0

はい、私は1つにします –

+0

従業員が休暇テーブルに複数の記録を持っている場合はどうなりますか?または、UIに表示されるレコードは1つだけですか? – DVJex

答えて

1

あなたは例が必要な情報を取得するために、モデル内の関数を得る:

public function getDaysOfLeaveLeft() { 
     // query for the data you need and return days left 
     return $days; 
    } 

は、次にビューで、あなたはそれを

<?= DetailView::widget([ 
     'model' => $model, 
     'attributes' => [ 
      'daysOfLeaveLeft', 
     ], 
    ]) ?> 

EDIT

を表示

フル機能n

public function getDaysOfLeaveLeft() { 
      $models = LeaveTable::findAll(['EmpId' => $this->EmpId]); 
      $leave = 0; 
      foreach ($models as $model) { 
       $leave += $model->daysleave; 
      } 
      $setting = Setting::find(['var' => 'MaxLeave']); 
      return $setting->val - $leave; 
     } 
+0

fields daysOfLeaveLeftはまだ存在しません.iはMaxLeaveをカウントする関数を作成していません - daysLeave = daysOfLeaveLeft。 –

+0

DetailViewに入力するモデルで関数を作成しましたか? – xReprisal

+0

私はhavent.do私は最初に3テーブルに参加する必要がありますか? –

関連する問題