【发布时间】:2015-12-14 15:35:58
【问题描述】:
我在 MySQL 中的 datetime 类型的表中有一个名为 issue_date 的字段,我将其更改为 date。
当我尝试将日期保存到数据库时,将其保存为
奇怪的年份(例如 2196 年),当实际日期为 2003 年时,我在保存之前输出了对象并显示实际日期(2003-06-30)
字段为issue_date。
这是我要保存的函数:
public function populate(){
$this->tangoModel=$this->loadModel('Tango');
$tango=$this->tangoModel->getInvoices();
$this->obrasModel=$this->loadModel('Obras');
$obras=$this->obrasModel->getObras();
foreach($tango as $invoice){
$data[] = ([
'issue_date' => date('Y-m-d', strtotime($invoice['issue_date'])),
'type' => $invoice['type']
]
);
}
print_r($data);
$invoices = $this->Invoices->newEntities($data);
foreach($invoices as $invoice){
if ($this->Invoices->save($invoice)) {
$this->Flash->success(__('The invoice has been saved.'));
};
}
}
这是一个数据数组对象的输出:
[0] => Array
(
[issue_date] => 2003-06-30,
[type] => CRE
)
这是如何在 MySQL 中插入的输出
[{"id":"1",
"issue_date":"2196-11-06",
"type":"CRE"
}]
这是在 /Model/Table 的 InvoicesTable 文件中验证字段的方式:
public function validationDefault(Validator $validator)
{
$validator
->add('id', 'valid', ['rule' => 'numeric'])
->allowEmpty('id', 'create');
$validator
->add('issue_date', 'valid', ['rule' => 'date'])
->allowEmpty('issue_date');
$validator
->allowEmpty('type');
return $validator;
}
}
这是/Model/Entity中的实体文件Invoice.php
/**
* Invoice Entity.
*
* @property int $id
* @property \Cake\I18n\Time $issue_date
* @property string $type
*/
class Invoice extends Entity
{
/**
* Fields that can be mass assigned using newEntity() or patchEntity().
*
* Note that when '*' is set to true, this allows all unspecified fields to
* be mass assigned. For security purposes, it is advised to set '*' to false
* (or remove it), and explicitly make individual fields accessible as needed.
*
* @var array
*/
protected $_accessible = [
'*' => true,
'id' => false,
];
}
谢谢
【问题讨论】:
-
在将列类型从
datetime更改为date之后,您是否清除了CakePHP 缓存?这是在更改数据库结构后遇到奇怪错误时首先要检查的事情。 -
是的,我已经删除了 /tmp/cache 中的所有内容
-
你的 mysql 输出是 '2196-11-06'。你说这个字段是日期时间?
-
现在字段是日期,原来是,当我使用 CakePHP 烘焙表格时,它是日期时间
-
intl.default_locale设置为什么?你用过DateTimeType::setLocaleFormat()或Time::setToStringFormat()吗?这可能很有趣:stackoverflow.com/questions/33734683/…
标签: php mysql cakephp cakephp-3.0