2017-06-14 24 views
0

上記の属性を持つモデルTblPayrollがあります。一意性を確認するには、'fk_int_emp_id''fk_int_payroll_month''fk_int_payroll_year'としてください。この3つのフィールドが既にデータベースにある場合、挿入しないでください。少なくとも1つは挿入するべきではありません。一意性をどのように確認できますか?3属性を設定する方法

public function attributeLabels() 
    { 
     return [ 
      'pk_int_payroll_id' => 'Payroll Id', 
      'fk_int_emp_id' => 'Employee', 
      'vchr_worked_hours' => 'Worked Hours', 
      'vchr_actual_hours' => 'Actual Hours', 
      'fk_int_payroll_month' => 'Month', 
      'fk_int_payroll_year' => 'Year', 
     ]; 
    } 

public function rules() 
    { 
     return [ 
      [[ 'vchr_worked_hours', 'vchr_actual_hours', 'fk_int_payroll_month', 'fk_int_payroll_year'], 'required'], 

      //[['fk_int_emp_id', 'fk_int_payroll_year','vchr_worked_hours','vchr_actual_hours'], 'integer'], 
      //[['fk_int_emp_id','fk_int_payroll_month','fk_int_payroll_year'], 'string', 'max' => 50], 
      [['fk_int_emp_id'], 'exist', 'skipOnError' => true, 'targetClass' => TblEmployee::className(), 'targetAttribute' => ['fk_int_emp_id' => 'pk_int_emp_id']], 
      [['fk_int_payroll_month'], 'exist', 'skipOnError' => true, 'targetClass' => TblPayrollMonth::className(), 'targetAttribute' => ['fk_int_payroll_month' => 'pk_int_payroll_month_id']], 
      [['fk_int_payroll_year'], 'exist', 'skipOnError' => true, 'targetClass' => TblPayrollYear::className(), 'targetAttribute' => ['fk_int_payroll_year' => 'pk_int_payroll_year_id']], 
     ]; 
    } 
+0

を試してみてください、あなたはルールではないラベルにユニークな属性を設定している。この –

+0

をチェックし、私たちはセクションを支配示し@scaiseEdge。 –

+0

編集したものを確認してください。このモデルを挿入する必要がありますが、 'fk_int_emp_id'、 'fk_int_payroll_month'、 'fk_int_payroll_year'を挿入している間はsametimeで一意でなければなりません。この3つのフィールドで誰かが異なる場合は、それを挿入する必要があります... –

答えて

0

この

[['fk_int_emp_id', 'fk_int_payroll_month', 'fk_int_payroll_year'], 'unique', 'targetAttribute' => ['fk_int_emp_id', 'fk_int_payroll_month', 'fk_int_payroll_year'], 'message' => 'The combination of .... has already been taken.'], 
+0

偉大なその正常に動作して、ありがとう、あなたsomuch –

関連する問題