laravel 5.2 - 日期格式,碳和Form :: date

时间:2016-05-07 17:36:28

标签: laravel date output

我有简单的专栏" date"在我的数据库(日期类型)。 我想将日期格式化为' d / m / Y'它有效但不完美 这是我的模特:

<?php

namespace App;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;

class Report extends Model
{
    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'reports';

    /**
    * The database primary key value.
    *
    * @var string
    */
    protected $primaryKey = 'id';

    /**
     * Attributes that should be mass-assignable.
     *
     * @var array
     */
    protected $fillable = ['title', 'category_id', 'author_id', 'date'];

    public function category(){
        return $this->belongsTo('App\Category');
    }

    public function user() {
        return $this->belongsTo('App\User', 'author_id');
    }

    public function getDateAttribute($value)
    {
        return Carbon::parse($value)->format('d/m/Y');
    }
}

并在我的视图中:

{!! Form::date('date', \Carbon\Carbon::now()->format('d/m/Y'), 
['class' => 'form-control', 'required' => 'required']) !!}

现在,在格式创建上,工作正常,但在创建记录后,值为30/11 / -0001或00/00/0000,为什么?

我的控制员:

public function store(Request $request)
{
    $this->validate($request, ['title' => 'required', 'date' => 'required']);

    $user = Auth::user()->id;
    $report = new Report($request->all());
    $report->author_id = $user;
    $report->save();

    Session::flash('flash_message', 'Report added!');

    return redirect('dash/reports');
}

1 个答案:

答案 0 :(得分:3)

我认为您应该将数据库中的日期存储为“Y-m-d”格式,只需添加一个mutator并在您的访问者中明确。

public function getDateAttribute($value)
{
    return Carbon::createFromFormat('Y-m-d', $value)->format('d/m/Y');
}

public function setDateAttribute($value)
{
    $this->attributes['date'] = Carbon::createFromFormat('d/m/Y', $value)->toDateString();
}