CAKEPHP 3 在数据库中保存成功关闭日期后不为空,它具有今天的值
Posted
技术标签:
【中文标题】CAKEPHP 3 在数据库中保存成功关闭日期后不为空,它具有今天的值【英文标题】:CAKEPHP 3 after save success close date in database is not null, it has todays value 【发布时间】:2015-02-02 15:46:08 【问题描述】:我有输入框
echo $this->Form->input('close_date',['empty' => true, 'default' => '']);
带有验证规则..
$validator->add('close_date', 'valid', ['rule' => 'date'])->allowEmpty('close_date');
$this->request->data before 的输出:
$ticket = $this->Tickets->patchEntity($ticket, $this->request->data);
是
['close_date' => [
'day' => '',
'month' => '',
'year' => ''
]]
但在数据库中保存成功关闭日期后不为空,它具有今天的值....
mysql 表字段 close_date 是类型 DATE 默认 NULL
我在这里遗漏了什么...我希望这个字段继续 NULL 为什么蛋糕保存在今天的日期?
【问题讨论】:
【参考方案1】:AFAICT datetime 类型还不能将空日期数组结构编组为空值。您可能想通过 at github 报告此问题,可能值得在核心中添加对此的支持。
作为一种(临时)解决方法,您可以使用 the Model.beforeMarshal
event/callback 并手动将属性设置为 null
,以防日期数组为空,例如:
public function beforeMarshal(Event $event, \ArrayObject $data, \ArrayObject $options)
if (
isset($data['close_date']) &&
is_array($data['close_date']) &&
!array_filter($data['close_date'])
)
$data['close_date'] = null;
【讨论】:
我本来打算在 github 上报道,但他们已经加入了,github.com/cakephp/cakephp/pull/5821以上是关于CAKEPHP 3 在数据库中保存成功关闭日期后不为空,它具有今天的值的主要内容,如果未能解决你的问题,请参考以下文章