我的查询适用于时间戳,但给出了日期时间错误

my query works with timestamp but gives an error with datetime

我有一个 mysql table 包含以下列

名字 |约会对象 |邮件 | created_at

"dateone"字段是日期类型

"created_at"字段是时间戳类型

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

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

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

它有效,但是,当我替换

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

来自

return $ item-> dateone-> 格式('Y-m-d');

我有以下错误:

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

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

感谢您的帮助。

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

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

如果你想让dateone每次都是Carbon的实例,你可以在模型中cast in the datetime format

假设型号名称是Item.php

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