我已经将我的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) )
我的模型文件:
<?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');
}
}
这是我的资源文件:
<?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
];
}
}
发布于 2022-08-24 07:07:05
我已通过删除数据类型来解决此问题,如下所示:
public function serializeDate($date): ?string
{
return ($date != null) ? $date->format('Y-m-d H:i:s') : null;
}
对我来说很管用!
https://stackoverflow.com/questions/73468469
复制相似问题