CAKEPHP 3 在数据库中保存成功关闭日期后不为空,它具有今天的值
CAKEPHP 3 after save success close date in database is not null, it has todays value
我有输入框
echo $this->Form->input('close_date',['empty' => true, 'default' => '']);
有验证规则..
$validator->add('close_date', 'valid', ['rule' => 'date'])->allowEmpty('close_date');
之前 $this->request->data 的输出:
$ticket = $this->Tickets->patchEntity($ticket, $this->request->data);
是
['close_date' => [
'day' => '',
'month' => '',
'year' => ''
]]
但在数据库中保存成功后关闭日期不为空,它具有今天的值....
in MySql table 字段 close_date 类型为 DATE 默认 NULL
我在这里遗漏了什么...我希望此字段继续为 NULL 为什么蛋糕保存在今天的日期?
AFAICT 日期时间类型还不能将空日期数组结构编组为空值。您可能想通过 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;
}
}
我有输入框
echo $this->Form->input('close_date',['empty' => true, 'default' => '']);
有验证规则..
$validator->add('close_date', 'valid', ['rule' => 'date'])->allowEmpty('close_date');
之前 $this->request->data 的输出:
$ticket = $this->Tickets->patchEntity($ticket, $this->request->data);
是
['close_date' => [
'day' => '',
'month' => '',
'year' => ''
]]
但在数据库中保存成功后关闭日期不为空,它具有今天的值....
in MySql table 字段 close_date 类型为 DATE 默认 NULL
我在这里遗漏了什么...我希望此字段继续为 NULL 为什么蛋糕保存在今天的日期?
AFAICT 日期时间类型还不能将空日期数组结构编组为空值。您可能想通过 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;
}
}