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 在数据库中保存成功关闭日期后不为空,它具有今天的值的主要内容,如果未能解决你的问题,请参考以下文章

将数据保存到 2 个表中 cakephp 3

CakePHP 3:上传多个文件并将文件名保存在关联模型中?

cakephp 如何使用一个日期和时间间隔创建和保存表单

Cakephp 多个输入字段

CakePHP 在 2 个日期记录之间搜索

Cakephp 3.7 hasOne字段数据不保存