温馨提示:本文翻译自stackoverflow.com,查看原文请点击:eloquent - my query works with timestamp but gives an error with datetime
datetime eloquent laravel-5.8 php-carbon timestamp

eloquent - 我的查询使用时间戳,但日期时间给出错误

发布于 2020-03-27 11:25:20

我有一个带有以下列的mysql表

名称| 大黄酮| 邮件| created_at

“日期”字段是日期类型

“ created_at”字段是时间戳类型

在我的控制器中,我有一种方法可以按日期对结果进行分组

$users = Post :: orderBy ('dateone') -> get () -> groupBy (function ($ item) {

 return $ item-> created_at-> format ('Y-m-d');

它有效,但是,当我更换时

返回$ item-> created_at- > format('Ym-d');

通过

返回$ item-> dateone- > format('Ym-d');

我有以下错误:

在字符串上调用成员函数format()

是否有通过Carbon或其他解决方案来解决我的问题?

感谢您的帮助。

查看更多

查看更多

提问者
Zembla
被浏览
60
lizeshakya 2019-07-03 22:43

是的,默认情况下created_atupdated_atCarbon实例中您可以通过将dateone解析为carbon实例来将它用作created_at。

$convertedDateOne = null;
if(!empty($item->dateone)){
    $convertedDateOne = Carbon::parse($item)->format('Y-m-d');
}

如果您希望每次将dateone都作为Carbon的实例,则可以在模型中以datetime格式进行转换

假设模型名称为Item.php

class Item extends Model{
   protected $dates = ['dateone'];
}