【问题标题】:my query works with timestamp but gives an error with datetime我的查询适用于时间戳,但日期时间出错
【发布时间】:2019-11-14 06:23:27
【问题描述】:

我有一个包含以下列的 mysql 表

名称 |约会 |邮件 | 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 或其他方法解决我的问题?

感谢您的帮助。

【问题讨论】:

    标签: datetime eloquent timestamp php-carbon laravel-5.8


    【解决方案1】:

    是的,默认情况下 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'];
    }
    

    【讨论】:

    • 非常感谢 lizeshakya 的帮助。模型中的 `protected $dates` 有效。另一个解决方案也很有效。碳是一个非常强大的类。再次感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2021-07-24
    • 2022-10-07
    • 2013-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多