2015-01-27 2 views
0

Предположим, у меня есть модель «Заказать», связанная с моделью «Заказчик».Как проверить, существует ли соответствующая модель при сохранении в 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(); 

Существует ли правило проверки, которое может быть применено к полю customer_id модели Order? Или я должен определить собственное правило?

ответ

0

Вам потребуется создать настраиваемое правило для этого при проверке модели.

Это говорит о том, что вы хотите знать очень просто, так что вы можете сделать это довольно легко.

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

Предполагая, что ваши ассоциации моделей определены правильно, это позаботится об этом. Просто сделайте валидацию с «rule» => 'checkCustomerExists'

+0

спасибо. это то, что я сделал – Jasper

0

я предполагаю, что есть два решения: - первое: сделать правила Validations в модели, как это:

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' 
     ) 
    ) 
); 
  • второй: вы можете использовать некоторый AJAX плагин обязывать некоторые поля, если вы получите те данные непосредственно. Например, как этот: http://jqueryvalidation.org/

Надеюсь, что это поможет.

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