使用 Laravel 将日期值插入日期字段

Posted

技术标签:

【中文标题】使用 Laravel 将日期值插入日期字段【英文标题】:Inserting Date Value into Date Field using Laravel 【发布时间】:2018-10-23 01:15:01 【问题描述】:

目前,我在表单上有一个日期字段,我希望能够插入正在编辑的当前记录的当前值。我的 mysql 数据库中没有记录丢失此日期字段,但由于某种原因,记录的值实际上不会加载到字段输入中,而是加载到输入字段的“值”部分。

目前这里是我的领域的代码:

<input type="date" name="date" id="date" class="form-control" style="width: 100%; display: inline;" onchange="invoicedue(event);" required value="$shipment->date">

这是代码输出:

<input name="date" id="date" class="form-control" style="width: 100%; display: inline;" onchange="invoicedue(event);" required="" value="2018-05-10 00:00:00" type="date">

但这就是它在我的浏览器中的样子:

但在我的 MySQL 数据库表中,字段(即日期字段)的格式如下:2018-05-12

【问题讨论】:

【参考方案1】:

对于日期,您可以在 laravel 中使用 mutators 检查 Documentations

然后你可以这样做:

class Shipment extends Model 

    protected $dates = ['date'];

那么你可以简单地写

<input type="date" name="date" id="date" class="form-control" style="width: 100%; display: inline;" onchange="invoicedue(event);" required value="$shipment->date->format('m/d/Y')">

如果你不想使用 laravel 日期修改器,你可以使用自己的类似这样的东西:

class Shipment extends Model

    /**
     * Set the date attribute.
     *
     * @param  string  $value
     * @return void
     */
    public function setDateAttribute($value)
    
        $this->attributes['date'] = Carbon::parse($value)->format('m/d/Y');
    

希望这会有所帮助。

【讨论】:

【参考方案2】:

使用&lt;input type="date"&gt; 时,value 需要采用 ISO 8601 日期格式:YYYY-MM-DD

尝试通过附加 -&gt;format('Y-m-d') 来改变您的 $shipment-&gt;date 值,它应该与预期的格式匹配。

试一试:

    <input 
        ...
        value=" $shipment->date->format('Y-m-d') " 
        ...
    >

您可以在这里了解更多信息:

https://developer.mozilla.org/en-US/docs/Web/html/Element/input/date https://en.wikipedia.org/wiki/ISO_8601

【讨论】:

【参考方案3】:

Laravel 充分利用了碳,让这样的任务成为了在公园里散步的必经之路。像往常一样将您的日期值发布到您的控制器,您使用的输入很好。

然后简单地用 Carbon 格式化

$formattedDate = Carbon::parse($request->date)->format('Y-m-s');

您现在有一个格式为 2018-05-13 的日期,这是 sql 的正确格式

您应该阅读 Carbon 文档,它可以做一些很棒的事情。

在这里查看https://carbon.nesbot.com/docs/

【讨论】:

以上是关于使用 Laravel 将日期值插入日期字段的主要内容,如果未能解决你的问题,请参考以下文章

将日期与laravel中mysql json数组的每个值进行比较

将 null 插入 MS Access 中的日期/时间字段-

将日期字符串转换为 mysql 日期时间字段

如何将带时区的日期时间插入 SQLite?

如何在 laravel 字段中显示日期时间?

如何在 Laravel 中比较简单日期和日期时间?