我有简单的专栏" 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');
}
答案 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();
}