Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel在保存到数据库之前是否更改日期?_Php_Mysql_Laravel_Datetime - Fatal编程技术网

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');