我試圖用CakePHP構建一個邀請系統。我有邀請模式有許多人,而人有一個並且屬於邀請。我相信這些關係正在發揮作用,因爲我的邀請索引視圖可以通過邀請模式正確訪問並顯示其關聯的人員。但繼承人什麼關係規則是這樣的:用saveAll()保存多個模型CakePHP
class Invitation extends AppModel {
var $name = 'Invitation';
var $hasMany = array(
'People' => array(
'className' => 'Person',
'foreignKey' => 'invitation_id',
'dependent'=> true
)
);
...
}
class Person extends AppModel {
var $name = 'Person';
var $hasOne = 'Invitation';
var $belongsTo = 'Invitation';
...
}
更新的模型關係:
class Invitation extends AppModel {
var $name = 'Invitation';
var $hasMany = array('Person');
...
}
class Person extends AppModel {
var $name = 'Person';
var $belongsTo = array('Invitation');
...
}
在我的邀請加入的功能,但是,我有保存爲新人們該數據的麻煩。我想同時添加一個邀請和兩個人。
我的繼承人附加功能:
function add() {
$this->autoRender = false;
if($this->RequestHandler->isAjax()) {
$this->layout = 'ajax';
if(!empty($this->data)) {
$this->Invitation->create();
if($this->Invitation->saveAll($this->data)) {
//debug($this->data);
$this->Session->setFlash('Saved');
$this->redirect('invitations/add_invitations');
} else {
echo('Didnt save<br />');
}
}
}
}
這裏是我的調試($這個 - >數據)的輸出:
Array
(
[Invitation] => Array
(
[code] => 001
[password] => 85c8a3735499bf91d25e5960ab4ed9deeb0b457e
[type] => 1
[num_people] => 2
)
[Person] => Array
(
[0] => Array
(
[fname] => Jane
[lname] => Doe
)
[1] => Array
(
[fname] => John
[lname] => Doe
)
)
)
我沒有得到任何錯誤。邀請數據保存正確,但人員沒有。
更新:我終於得到了與上述更新的模型關係工作。顯然hasOne & belongsTo Person模型中的規則是衝突的。之後,我犯了一個錯誤(令人尷尬的),這是防止保存到相關的Person模型:
在邀請模式中,我hade $ hasMany = array('People');當它應該是$ hasMany = array('Person')。
我還必須更改我的數據庫的配置以使用InnoDB作爲默認值,所以這肯定是一個必要的修復。
我想你的人沒有通過驗證測試。你有'人桌'嗎? – bancer 2010-10-25 00:55:18
保存操作後,嘗試調試($ this-> Invitation-> invalidFields())'。 – deceze 2010-10-25 02:36:20
我當然有一個「people」表,帶有一個invitation_id字段。如上所述調試會輸出一個空數組,因此我假設這意味着數據已經過驗證。 – 2010-10-26 16:31:21