我有一個模型結構是:CakePHP深入(多個相關模型)驗證?
Organization
屬於關聯Address
屬於關聯CountryCode
所以,Organization
有外鍵:mailing_address_id
和physical_address_id
Address
有外鍵:country_code_id
在Organization
模型,關係定義爲:
public $belongsTo = array(
'MailingAddress' => array('className'=>'Address', 'foreignKey'=>'mailing_address_id')
, 'PhysicalAddress' => array('className'=>'Address', 'foreignKey'=>'physical_address_id')
);
這似乎是偉大的工作 - 驗證是否正常等
在Address
模型,關係被定義爲:
public $belongsTo = array(
'CountryCode' => array('className'=>'CountryCode', 'foreignKey'=>'country_code_id')
);
在我OrganizationsController
,在一個函數來創建一個新組織,我正在使用此代碼測試驗證:
if($this->Organization->saveAll(
$data, array('validate'=>'only')
)) {
// Validates
$this->DBG('Org validated.');
} else {
// does not validate
$this->DBG('Org NOT NOT NOT validated.'.print_r($this->Organization->invalidFields(),true));
}
$data
數組看起來像這樣進入驗證。
2015-06-08 21:03:38 Debug: Array
(
[Organization] => Array
(
[name] => Test Organization
)
[MailingAddress] => Array
(
[line1] => 100 Main Street
[line2] =>
[city] => Houston
[state] => TX
[postal_code] => 77002
[CountryCode] => Array
(
[name] => United St
)
)
[PhysicalAddress] => Array
(
[line1] => 100 Main Street
[line2] =>
[city] => Houston
[state] => TX
[postal_code] => 77002
[CountryCode] => Array
(
[name] => United St
)
)
)
的國家代碼不應該與我在CountryCode
模型設置的規則驗證:
public $validate = array(
'name' => array(
'nonemptyRule' => array(
'rule' => 'notEmpty'
,'required' => 'create'
,'message' => 'Must be provided.'
)
,'dupeRule' => array(
'rule' => array('isUnique', array('name','code'), false)
,'message' => 'Duplicate'
)
)
,'code' => array(
'rule' => 'notEmpty'
,'required' => 'create'
,'message' => 'Must be provided.'
)
);
然而,驗證通過對Organization->saveAll
。
此外,如果我嘗試從OrganizationController
訪問CountryCode
模型,則它不會被加載。
如:
$this->Organization->MailingAddress->CountryCode->invalidate('name','Invalid!');
在這種情況下,我得到一個錯誤,CountryCode
是null
。
任何想法爲什麼CountryCode不會驗證或加載?
驗證應該工作兩步之遙?