2012-02-29 56 views
0

保存數據的這兩種方式之間的區別是什麼CakePHP中保存數據是什麼CakePHP中

$this->request->data['User']['status'] = 'Active'; 

$this->User->saveField('status', 'Active'); 
+0

你不能比較這兩個。首先你應該爲這個問題添加$ this-> Model-> save()來做出任何意義。 – mark 2012-02-29 21:19:28

回答

1
$this->request->data['User']['status'] = 'Active'; 

這意味着你將在之後調用save()或saveAll()。這些方法將檢查數據的有效性。

$this->User->saveField('status', 'Active'); 

沒有數據驗證,您需要在調用saveField之前設置$ this-> User-> id。

+0

感謝您的信息。 – Cameron 2012-02-29 21:38:56

2

的區別這兩種方式之間的區別是,這行代碼實際上不保存任何數據:

$this->request->data['User']['status'] = 'Active'; 

它只是改變該模型上的字段。

如果您要更新該字段,然後執行$this->User->save(),則需要保存整個模型(包括剛更改的字段)。

當您使用$this->Model->saveField(field,value)時,您實際上是使用當前加載模型的新字段值更新數據源。

如果您尚未加載所有數據字段,並且使用save()將驗證失敗或使用空/空值覆蓋現有值,您可能需要使用saveField()

相關問題