如何在CakePHP中保存时验证关联模型是否存在

时间:2015-01-27 03:53:07

标签: validation cakephp

假设我有一个'订单'与客户相关的模型'模型。

class Order {
   var $belongsTo = array('Customer');
}

CakePHP中是否有标准方法来验证customer_id字段指向的记录是否存在?

$this->Order->create();
$this->Order->set('customer_id', 1);
$this->Order->set('order_date', date('Y-m-d'));
$this->Order->set('total', 100);
$this->Order->save();

是否有可以应用于Order模型的customer_id字段的验证规则?或者,我是否必须定义自定义规则?

2 个答案:

答案 0 :(得分:0)

我猜有两种解决方案: - 首先:在模型中制作验证规则,如下所示:

public $validate = array(
    'username' => array(
        'isUnique' => array(
            'rule' => 'isUnique',
            'message' => 'That username has already been taken',
            'on' => 'create'
        ),
        'notEmpty' => array(
            'rule' => 'notEmpty',
            'message' => 'Please enter a username'
        )
    )
);

希望它有所帮助。

答案 1 :(得分:0)

您必须在模型验证中创建自定义规则才能执行此操作。

那就是说,你想知道的很简单,所以你可以很容易地做到。

public function checkCustomerExists(){
    return $this->Customer->exists($this->data[$this->alias]['customer_id']);
}

假设您正确定义了模型关联,那么就会处理它。只需使用'规则'进行验证输入即可。 => ' checkCustomerExists'