Laravel Eloquent 数据查询结果中日期的格式化

文章目录

    两种情况:

    使用 Model 的查询

    例如:

    $item = App\Models\Apple::first();
    $date = $item->created_at->format('Y-m-d');
    

    使用 DB::table 的查询

    如果直接对结果中的 datetime 做 format,会报错

    Call to a member function format() on string

    因为 DB::table 返回的结果都是 string,没有关联 Model。当然各种定义好的自动转换也会失效。

    这时候就需要先解析,再格式化

    Carbon\Carbon::parse($item->expired_at)->format('Y-m-d')
    

    最佳方案

    所以,尽量使用 Model 进行数据查询操作,避免使用 DB::table.

    即使是使用 leftJoin 这些操作,也可以是 Model 进行。虽然官方文档一直在用 DB::table.

    例如:

    $case->progress_detail = ProjectProgress::leftJoin('users', 'project_progress.pm_id', '=', 'users.id')
                    ->select('project_progress.*', 'users.name')
                    ->where('project_progress.id', $case->id)
                    ->first();
    

    关于作者 🌱

    我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式