Php Laravel在保存到数据库之前是否更改日期?
我有一个在日期选择器中选择的日期,格式如下Php Laravel在保存到数据库之前是否更改日期?,php,mysql,laravel,datetime,Php,Mysql,Laravel,Datetime,我有一个在日期选择器中选择的日期,格式如下 Y-m-d g:i A 因此,使用AM/PM,它在我的输入字段中显示以下内容,这是正确的 当我提交表单时,当然,Laravel不会更新记录,因为mysql中的DATETIME字段不知道该格式 我的“日期”字段被添加到$dates数组中,因此它应该由Laravel解析 我试着在我的模型上使用一个变量,如下所示,但没有成功 未更新原始值。 知道我做错了什么吗 谢谢看看Laravel的,这为您处理进出数据库的访问和变异日期,就像在处创建的和其他默认日期一
Y-m-d g:i A
因此,使用AM/PM,它在我的输入字段中显示以下内容,这是正确的
当我提交表单时,当然,Laravel不会更新记录,因为mysql中的DATETIME字段不知道该格式
我的“日期”字段被添加到$dates数组中,因此它应该由Laravel解析
我试着在我的模型上使用一个变量,如下所示,但没有成功
未更新原始值。
知道我做错了什么吗
谢谢看看Laravel的,这为您处理进出数据库的访问和变异日期,就像在处创建的和其他默认日期一样
基本上,您需要将date
字段添加到模型上的$dates
数组中,如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = [
'created_at', // Add if you're using timestamps on the model
'updated_at', // Add if you're using timestamps on the model
'deleted_at', // Add if you're using softDeletes on the model
'date'
];
}
看来你的碳功能还可以。但为什么它不起作用,我不明白。但我有一个使用PHP日期函数的解决方案
public function setDateAttribute($value)
{
$this->attributes['date'] = date("Y-m-d H:i:s", strtotime($value);
}
Laravel的日期变换器需要类似于'Y-m-d H:i:s'
的格式,但您可以在模型上使用$dateFormat
属性来指定不同的格式。例如:
protected $dateFormat = 'Y-m-d g:i A';
查看下文档中的日期格式部分
或者,您可以在模型之外使用Carbon解析日期,因为$dates
中列出的属性也将接受Carbon实例:
$model->date = Carbon::createFromFormat('Y-m-d g:i A', '2016-11-29 02:00 PM');
这是我通常使用的方法。对我来说,这更像是一个前端问题,您试图将用户友好的格式映射到您的模型/DB期望的格式,因此我通常将此逻辑放入控制器。感谢您的回答,情况已经如此。我忘了把它添加到我的问题中,我现在就添加它。这是因为你们提交表格时出现了一个错误吗?不是!它只是没有更新我数据库中的值。非常感谢!我被这一切弄糊涂了。。显然,使用默认值将其保存在数据库中,但以其他方式显示它,然后在控制器中重新传输它。
$model->date = Carbon::createFromFormat('Y-m-d g:i A', '2016-11-29 02:00 PM');