我有一個突變:無法設置日期時間字段CakePHP的3
protected function _setPurchaseTime($purchase_time) {
return Time($purchase_time);
}
當我這樣設置值這個突變被運行良好:
$transaction->purchase_time = $this->request->data['purchase_time'];
的突變正確得到$purchase_time
。但是,當我試圖設置它是這樣的:
$transaction = $this->Transactions->patchEntity($transaction, $this->request->data);
$purchase_time
爲空。我無法弄清楚爲什麼會出現這種情況? mutator運行得很好,但變量爲空。
編輯:
我還要補充一點,purchase_time
可訪問:
protected $_accessible = [
'ticker' => TRUE,
'name' => TRUE,
'market' => TRUE,
'transaction_type' => TRUE,
'price' => TRUE,
'currency' => TRUE,
'commission' => TRUE,
'shares' => TRUE,
'purchase_time' => TRUE
];
編輯:增加了額外的數據
這是進入patchEntity數據:
[
'ticker_label' => 'AAPL (Apple Inc.)',
'ticker' => 'AAPL',
'currency' => 'USD',
'market' => 'NASDAQ',
'transaction_type' => 'Buy',
'price' => '10',
'commission' => '10',
'shares' => '10',
'date' => 'Yesterday',
'purchase_time' => 'July 12, 2015 12:00',
'time' => '12:00',
'name' => 'Apple Inc.'
]
這是patchEntity運行後的數據:
object(App\Model\Entity\Transaction) {
'portfolio_id' => '43',
'ticker' => 'AAPL',
'currency' => 'USD',
'market' => 'NASDAQ',
'transaction_type' => 'Buy',
'price' => (float) 10,
'commission' => (float) 10,
'shares' => (float) 10,
'purchase_time' => (int) 1436803512,
'name' => 'Apple Inc.',
'[new]' => true,
'[accessible]' => [
'ticker' => true,
'name' => true,
'market' => true,
'transaction_type' => true,
'price' => true,
'currency' => true,
'commission' => true,
'shares' => true,
'purchase_time' => true
],
'[dirty]' => [
'portfolio_id' => true,
'ticker' => true,
'currency' => true,
'market' => true,
'transaction_type' => true,
'price' => true,
'commission' => true,
'shares' => true,
'purchase_time' => true,
'name' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[repository]' => 'Transactions'
}
正如您所看到的,如果您在purchase_time
字段中對Unix時間戳記進行了轉換,則它不等於輸入。它等於現在的時間,預計將NULL
的值傳遞到Time()
。
您可能有驗證錯誤 –
@JoséLorenzo我現在沒有驗證,還沒有設置任何,因爲我想在我添加驗證之前首先得到這個工作。 –
修補程序實體後調試($ transaction)的結果是什麼? –