Php 将碳日期转换为mysql时间戳。

Php 将碳日期转换为mysql时间戳。,php,mysql,laravel,timestamp,php-carbon,Php,Mysql,Laravel,Timestamp,Php Carbon,我在mysql数据库中有一个timestamp变量列。尝试将carbon时间戳转换为我可以在那里输入的内容,但是carbon::now()只返回一个carbon对象,当我尝试使用carbon对象的时间戳字符串时,它不会在mysql中注册 public function store(CreateArticleRequest $request){ $input = $request->all(); var_dump($input); // JUST SO YO

我在mysql数据库中有一个timestamp变量列。尝试将carbon时间戳转换为我可以在那里输入的内容,但是
carbon::now()
只返回一个carbon对象,当我尝试使用carbon对象的时间戳字符串时,它不会在mysql中注册

public function store(CreateArticleRequest $request){
        $input = $request->all(); 
        var_dump($input); // JUST SO YOU CAN SEE
        $input['published_at'] = Carbon::now(); 
        var_dump($input); // JUST SO YOU CAN SEE
        Article::create($input);   
}
我的第一个var转储如下所示:

array (size=4)
  '_token' => string 'Wy67a4hWxrnfiGz61wmXfYCSjAdldv26wOJiLWNc' (length=40)
  'title' => string 'ASDFasdf' (length=8)
  'body' => string 'asdfasdf' (length=8)
  'published_at' => string '2015-08-26' (length=10)  
我的第二个var转储就是这样

与“published_at”相关的mysql列是一个时间戳变量。我想如何把它从一个碳物体上转换过来


提前谢谢

问题出在日期字符串中,例如,您有:

public function setCrbDateAttribute($value)
{
     $this->attributes['crb_date'] = \Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}
现在,如果存在2014年12月10日这样的日期,则会出现此错误,因为缺少小时和分钟。因此,您要确保日期包含所有PAR,并且还要确保日期字符串包含-作为分隔符,而不是/

换句话说,在使用Carbon之前检查$value,并确保日期字符串包含与方法中使用的格式完全相同的字符串

这也发生在访问器方法中,因此在
Carbon::createFromFormat()中使用日期值之前,请先检查日期值。

如果您是从用户输入中获取日期,请在使用日期或日期\格式:格式规则之前验证该日期,请在此处检查验证

答复参考:


您还可以在模型上设置Mutator

public function setPublishedAt($value)
{
    $this->attributes['published_at'] = strtotime($value);
}
转换为时间戳

$model -> setPublishedAt('2015-08-26'); // 1440572400
或者您可以使用
strotime

strotime-将任何英文文本datetime描述解析为Unix时间戳

$model -> setPublishedAt('2015-08-26'); // 1440572400

希望这有帮助

简单的回答是,
toDateTimeString()
就是您要寻找的:

$input['published_at'] = Carbon::now()->toDateTimeString();
如果只需要日期部分而不需要时间,请参阅以获取更多选项,包括
toDateString()


但更好的处理方法是让Laravel为您处理向碳对象/从碳对象转换日期值。看

在日期上使用
strotime
。这不是MySQL时间戳,而是UNIX时间戳。您确实需要更新此问题的答案