日付と時刻の入力フィールドがあります。日付と時刻の両方のフィールドをマージして、これら2つの値をデータベースに保存しようとしています。
問題:データベースから日付を取得すると、Carbonオブジェクトではなく文字列で日付が取得されます。どうしてこれなの?
私が持っているもの:
私の入力フィールド:
{{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"
}
}
追加したら:
protected $dates = ['end_date'];
ミューテーターはもう必要ありません。
属性を呼び出すだけです。
$task = Task::first();
dd($task->end_date);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加