我在mysql数据库中有一个时间戳变量列。尝试将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列是一个时间戳变量。我该怎么把它从碳物体转换过来呢?
提前谢谢。
发布于 2015-08-26 15:50:39
也可以在模型上设置Mutator。
public function setPublishedAt($value)
{
$this->attributes['published_at'] = strtotime($value);
}转换为时间戳
$model -> setPublishedAt('2015-08-26'); // 1440572400或者,您可以使用strtotime将日期转换为时间戳
Unix strtotime -将任何英文文本日期时间描述解析为
时间戳
希望这能有所帮助。
发布于 2017-03-25 12:52:48
简而言之,toDateTimeString()就是您要找的东西:
$input['published_at'] = Carbon::now()->toDateTimeString();有关更多选项,请参阅http://carbon.nesbot.com/docs/,如果您只需要日期部分而不是时间部分,请参阅toDateString()。
但更好的处理方法是让Laravel为您将日期值转换为Carbon对象。参见https://laravel.com/docs/5.4/eloquent-mutators#date-mutators。
发布于 2015-08-26 15:44:56
问题出在您的日期字符串中,例如,您具有以下内容:
public function setCrbDateAttribute($value)
{
$this->attributes['crb_date'] = \Carbon\Carbon::createFromFormat('d-m-Y h:i', $value);
}现在,如果存在类似于10-12-2014的日期,则会出现此错误,因为缺少小时和分钟。因此,您要确保日期包含所有语法分析,并确保日期字符串包含-作为分隔符,而不是/。
换句话说,在使用Carbon之前,请检查$value,并确保日期字符串包含的格式化字符串与方法中使用的完全相同。
这也会发生在访问器方法中,因此在Carbon::createFromFormat().中使用日期值之前,请先检查日期值
如果您从用户输入中获取日期,然后在使用日期或date_format:format规则之前验证日期,请在此处检查验证。
答案参考:
https://stackoverflow.com/questions/32220091
复制相似问题