2017-08-04 175 views
0

我試圖將數據保存到訂單表中。但是save方法返回NULL。我也提供了數據。保存()返回NULL,不保存數據

這是我正在嘗試的代碼。

$OrderData = [ 
    'order_name' => 56, 
    'order_status_id' => '2', 
    'order_date' => date('Y-m-d H:i:s'), 
    'order_address' => '', 
    'order_suburb' => '', 
    'order_state' => '', 
    'order_postcode' => '', 
    'order_country' => '', 
    'client_id' => 55 
]; 
$this->loadModel('Orders'); 
$orderData = $this->Orders->newEntity($OrderData, ['validate' => false]); 
debug($this->Orders->save($orderData));die; 
var_dump($this->Orders->save($orderData));die; 

調試返回false。 var_dump返回bool(false)。 我甚至無法檢查由蛋糕ORM生成的SQL查詢,因爲save方法不是一個對象。 我想從登錄控制器執行此操作。 $ orderData是一個包含數據的實體,它不爲null。

+1

隨着'PR()調試我的代碼'你不能告訴null','FALSE'之間'的區別,' '''。調用'save()'後,使用'debug()'作爲結果以及實體。 – ndm

+0

debug(),返回false。我現在應該怎麼做?順便說一句,你能說我看看代碼是什麼原因? @ndm –

+2

如上所示,調用'save()'後調試實體。如果在那裏沒有發現錯誤,請檢查生成的SQL查詢。 – ndm

回答

0

在CakePHP ['validate' => false],不會驗證您的域(這是需要在創建或更新域)簡單,我們可以說validationDefault()驗證不會驗證,但會驗證buildRules()規則(的存在規則和獨特的規則)。所以我得到一個錯誤,因爲我的client_id在客戶表中不存在。

我已經使用方法errors(),像$orderData->errors();

-1

試試這個:

$OrderData = [ 
    'order_name' => 56, 
    'order_status_id' => '2', 
    'order_date' => date('Y-m-d H:i:s'), 
    'order_address' => '', 
    'order_suburb' => '', 
    'order_state' => '', 
    'order_postcode' => '', 
    'order_country' => '', 
    'client_id' => 55 
]; 
$this->loadModel('Orders'); 
$saveData = $this-> Orders->newEntity(); 
$saveData = $this-> Orders->patchEntity($saveData, $OrderData); 
$saveData = $this-> Orders->save($saveData); 
+0

這是我已經做了。這不起作用。 –

+0

好的你最近的問題是什麼?數據沒有正確保存或其他東西。 –

+0

數據不保存,而且我的保存方法返回布爾數據而不是對象。 –

1

嘗試debug($orderData->getErrors());只是爲了確保有實體對象上沒有驗證錯誤。

OR

使用錯誤()直接到實體,如pr($orderData->errors());die;。然而,$entity->errors()方法自3.4.0開始已棄用,應替換爲$entity->getErrors()

+0

請注意這行$ this-> Orders-> newEntity($ OrderData,['validate'=> false]);在我的參考代碼中。 –

+0

是的,我看到了行:)但我記得我有一個類似的問題,並發現,我有一個驗證規則是由保存方法處理,而不是newEntity方法。至少據我記憶。所以我習慣了在保存方法返回false的情況下總是調試$ entity-> getErrors()。 – Simon

+1

有驗證規則(編組時間)和應用規則(節省時間),後者可以利用前@ bikash.bilz – ndm