【问题标题】:Inserting Date Value into Date Field using Laravel使用 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

【问题讨论】:

    标签: mysql laravel laravel-5


    【解决方案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/

        【讨论】:

          猜你喜欢
          • 2012-05-01
          • 1970-01-01
          • 2017-04-13
          • 2011-10-24
          • 2012-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多