首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >laravel 8 serializeDate()必须实现接口DateTimeInterface,

laravel 8 serializeDate()必须实现接口DateTimeInterface,
EN

Stack Overflow用户
提问于 2022-08-24 06:36:02
回答 1查看 117关注 0票数 0

我已经将我的Laravel项目从6升级到7,然后升级到8,我遵循了所有的文档升级步骤,但出乎意料的是,我遇到了serializeDate()函数的错误。

我在模型中创建了它,然后在资源中调用它,但是它最终导致了以下错误:

传递给App\ TypeError \User::serializeDate()的TypeError参数1必须实现接口DateTimeInterface,空给定,在第23行的TypeError中调用(View: /var/www/html/POS_Ibra/resources/views/user/user_detail.blade.php) )

我的模型文件:

代码语言:javascript
运行
复制
<?php

namespace App\Models;

use Carbon\Carbon;
use DateTimeInterface;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;

class User extends Model
{
    protected $table    = 'users';
    protected $hidden   = ['id', 'password', 'role_id'];
    protected $fillable = ['slack', 'user_code', 'fullname', 'email', 'password', 'init_password', 'phone',
                           'profile_image', 'role_id', 'status', 'is_admin', 'created_by', 'updated_by'];

    

    public function parseDate($date): ?string
    {
        return ($date != null) ? Carbon::parse($date)->format(config("app.date_time_format")) : null;
    }

    /**
     * Prepare a date for array / JSON serialization.
     *
     * @param  \DateTimeInterface  $date
     * @return string
     */
    public function serializeDate(DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }
}

这是我的资源文件:

代码语言:javascript
运行
复制
<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class UserResource extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param \Illuminate\Http\Request $request
     * @return array
     */
    public function toArray($request)
    {
        return [
            'slack'            => $this->slack,
            'user_code'        => $this->user_code,
            'created_at_label' => $this->serializeDate($this->created_at),
            'updated_at_label' => $this->serializeDate($this->updated_at),
            'created_by'       => $this->createdUser,
            'updated_by'       => $this->updatedUser
        ];
    }
}

错误信息

我的模型文件

资源文件

EN

回答 1

Stack Overflow用户

发布于 2022-08-24 07:07:05

我已通过删除数据类型来解决此问题,如下所示:

代码语言:javascript
运行
复制
public function serializeDate($date): ?string
{
    return ($date != null) ?  $date->format('Y-m-d H:i:s') : null;
}

对我来说很管用!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73468469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档