2014-01-21 2 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_to с eval_pts_from) и (Salary_max с Salary_min). я 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

Можете ли вы написать, как я могу добавить к ним следующее: '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'),), и эти «Salary_max» => массив ('numeric' => array ('rule' => array ('numeric'),), 'notEmpty' => array ('rule' => array ('notEmpty'),),), 'Salary_min' => array ('numeric' => array ('rule' => array ('numeric'),), 'notEmpty' => array ('rule' => array ('notEmpty'),),), –

+0

Вы можете вернуть результат '(сравнение1> compare2)' d irectly; не нужно обертывать его в оператор 'if()', поскольку он возвращает 'true' или' false'. –

+0

@MartinBean: Правильно! – kicaj

Смежные вопросы