2014-01-21 84 views
0

請問,我還是新來的cakephp。 我想做一個自定義函數來比較兩個值,但我想將這些值作爲參數發送給函數。比較模型中的值cakephp

這裏是我的模型:

<?php 
    App::uses('AppModel', 'Model'); 
    class PayGrade extends AppModel 
    { 
    public $displayField = 'id'; 


public $validate = array(
    'id' => array(
     'notEmpty' => array(
      'rule' => array('notEmpty'), 
     ), 
     'uuid' => array(
      'rule' => array('uuid'), 
     ), 
     'numeric' => array(
      'rule' => array('numeric'), 
     ), 
    ), 
    'Salary_max' => array(
     'numeric' => array(
      'rule' => array('numeric'), 
     ), 
     'notEmpty' => array(
      'rule' => array('notEmpty'), 
     ), 
    ), 
    'Salary_min' => array(
     'numeric' => array(
      'rule' => array('numeric'), 
     ), 
     'notEmpty' => array(
      'rule' => array('notEmpty'), 
     ), 
    ), 
    'Currency' => array(
     'notEmpty' => array(
      'rule' => array('notEmpty'), 
     ), 
    ), 
    'eval_pts_from' => array(
     'numeric' => array(
      'rule' => array('numeric'), 
     ), 
     'notEmpty' => array(
      'rule' => array('notEmpty'), 
     ), 
    ), 
    'eval_pts_to' => array(
     'numeric' => array(
      'rule' => array('numeric'), 
     ), 
     'notEmpty' => array(
      'rule' => array('notEmpty'), 
     ), 
    ), 
); 
    function compareVals($min,$max) 
    { 
     if($min >= $max) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 
public $hasMany = array(
    'Jobs_levels' => array(
     'className' => 'Jobs_levels', 
     'foreignKey' => 'Pay_grades_id', 
     'dependent' => false, 
     'conditions' => '', 
     'fields' => '', 
     'order' => '', 
     'limit' => '', 
     'offset' => '', 
     'exclusive' => '', 
     'finderQuery' => '', 
     'counterQuery' => '' 
    ) 
); 

}

我想比較(與eval_pts_from eval_pts_to)和(Salary_max與Salary_min)。 I V搜查,但發現,從功能,這意味着我還得去創建2個功能之一eval_points,另一個用於工資

預先感謝您

+0

不清楚..你是否想要這個比較? – Anubhav

+0

我想添加它..我不知道如何 –

+0

我分享了一個通用函數來比較字段來驗證在這裏:http://stackoverflow.com/a/21708996/1062304 – bfncs

回答

0

一些代碼內部調用變量的一些功能能解釋一下:

public function validationComparisonField($check, $other_field) { 
    if ($this->data[$this->alias][$other_field] > $check[key($check)])) { 
     return true; // passed 
    } 

    return false; // not passed 
} 

你總是可以從$this->data

驗證規則獲取數據

'Salary_max' => array(
     'numeric' => array(
      'rule' => array('validationComparisonField', 'salary_min'), 
     ), 
+0

你能寫我將如何將它添加到這些: ('rule'=> array('numeric'),),'notEmpty'=> array('rule'=> array('notEmpty'),)數組('數組' ,'eval_pts_to'=> array('numeric'=> array('rule'=> array('numeric'),),'notEmpty'=> array('rule'=> array('notEmpty'), ), and these 'Salary_max'=> array('numeric'=> array('rule'=> array('numeric'),),'notEmpty'=> array('rule'=> array( 'notEmpty'),),),'Salary_min'=> array('numeric'=> array('rule'=> array('numeric'),),'notEmpty'=> array('rule'=> array ('notEmpty'),),), –

+0

您可以返回'(comparison1> comparison2)的結果'd irectly;無需將其封裝在「if()」語句中,因爲它本身返回「true」或「false」。 –

+0

@MartinBean:沒錯! – kicaj