Laravel 6のときには、Bladeで
<div class="form-group">
<label for="expiration_date">期限日</label>
<input type="date" name="expiration_date" id="expiration_date"
class="form-control @error('expiration_date') is-invalid @enderror "
value="{{ old('expiration_date',$task->expiration_date) }}">
@error('expiration_date')
<div id="validateExpirationDate" class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
のように
$task->expiration_date
$(モデルのオブジェクト)->プロパティ(カラム)
でデータベースから日付形式の値を取得すると、
2021-09-05
という形式の値になっていましたが、Laravel 8では
2021/09/05
という形式になっていて、<input type=”date”>のvalue属性の値に入れても、ブラウザで表示するとテキストボックスの中に日付が表示されません。(<input type=”date”>の場合は、value属性の値は”Y-m-d”にする必要がある)
日付形式のカラムの値をDatetime型として扱うことで、fomat()メソッドをBladeの中で使うことができます。モデルに下記のプロパティを追記します。
/** @var array Datetime型として扱うカラム */
protected $dates = [
'expiration_date',
'completion_date',
];
Bladeでformat()を使って、日付形式のフォーマットをすることが可能です。
$task->expiration_date->format('Y-m-d')