Php 获取数据时获取字符串而不是碳对象

Php 获取数据时获取字符串而不是碳对象,php,laravel,datetime,php-carbon,Php,Laravel,Datetime,Php Carbon,我有一个日期和时间输入字段,我将日期和时间字段合并在一起,并尝试将这两个值存储在数据库中 问题:当我从数据库中检索日期时,我得到的是字符串中的日期,而不是碳对象。为什么会这样 我所拥有的: 我的输入字段: {{Form::date('date', \Carbon\Carbon::today(),['class' => 'form-control mb-2 mr-sm-2 mb-sm-0'])}} {{Form::time('time', \Carbon\Carbon::now()->

我有一个日期和时间输入字段,我将日期和时间字段合并在一起,并尝试将这两个值存储在数据库中

问题:当我从数据库中检索日期时,我得到的是字符串中的日期,而不是碳对象。为什么会这样

我所拥有的:

我的输入字段:

{{Form::date('date', \Carbon\Carbon::today(),['class' => 'form-control mb-2 mr-sm-2 mb-sm-0'])}}
{{Form::time('time', \Carbon\Carbon::now()->timezone('Europe/Brussels'),['class' => 'form-control'])}}
我在控制器上的存储功能:

public function store(Request $request)
{

    $this ->validate($request, ['title' => 'required|max:25','description' => 'required|max:60']);

    $task = new Task;
    $task -> end_date = $request->input('date') . ' ' . $request->input('time');
    $task -> user_id = auth()->id();
    $task->save();

    return redirect('/tasks')->with('success', 'Task created');
}
我设置属性的模型:

    class Task extends Model
{
    protected $fillable = ['title','description', 'end-date'];

    protected $dates = ['end_date'];

    public function comments()
    {
        return $this->hasMany(Comment::class);
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function setEndDateAttribute($date) 
    {

        $this->attributes['end_date'] = Carbon::createFromFormat('Y-m-d H:i:s', $date);

    }
    public function getEndDateAttribute($date) 
    {
       dd($date);
       // Result of this example: "2018-08-17 22:39:55"
    }

}
$task = Task::first();
dd($task->end_date);
一旦添加:

protected $dates = ['end_date'];
你不再需要变异基因了

您只需调用该属性:

    class Task extends Model
{
    protected $fillable = ['title','description', 'end-date'];

    protected $dates = ['end_date'];

    public function comments()
    {
        return $this->hasMany(Comment::class);
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function setEndDateAttribute($date) 
    {

        $this->attributes['end_date'] = Carbon::createFromFormat('Y-m-d H:i:s', $date);

    }
    public function getEndDateAttribute($date) 
    {
       dd($date);
       // Result of this example: "2018-08-17 22:39:55"
    }

}
$task = Task::first();
dd($task->end_date);

那么setEndDateAttribute()也可以删除吗?如果使用默认的日期时间格式,则可以。