使用 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】:使用<input type="date">
时,value
需要采用 ISO 8601 日期格式:YYYY-MM-DD
尝试通过附加 ->format('Y-m-d')
来改变您的 $shipment->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数组的每个值进行比较