首页 > 解决方案 > 实体保存到数据库错误的日期格式codeigniter 4

问题描述

我的实体如下所示:

class Request extends Entity
{
    protected $casts = [
        'id'                => 'integer',
        'added_at'          => 'datetime',
        'deadline'          => 'datetime',
        'completed'         => 'integer'
    ]; 
}

保存时,模型会为 sql 查询生成 'Y/m/d' 格式的日期字段,但是我的数据库无法解析这个。调用时如何强制它以“Ymd”格式生成日期$myModel->insert($myEntity)

标签: codeigniterdateformatentitycodeigniter-4

解决方案


实体可以选择设置器。每当您执行保存实体时,它都会在您的情况下执行验证或转换。假设你想改变deadline这种情况下的形式,你必须为你的 Setter 设置deadline如下:

public function setDeadline(string $dateString)
{
    $this->attributes['deadline'] = $dateString;

    return $this;
}

在以下行中:$this->attributes['deadline'] = $dateString;您将使用像 Carbon 这样的库来格式化$dateString,然后重新分配您的变量截止日期。参考链接: https ://codeigniter4.github.io/userguide/models/entities.html


推荐阅读