私はモデルにあります:
protected $casts = [
'date' => 'date',
];
laravelキャスト形式を設定する機能があります。
protected $casts = [
'date' => 'date_format:d/m/yyyy',
];
?
編集済み
私はこれを試しました:
モデル内:
protected $dateFormat = 'm/d/Y';
protected $dates = ['driver_expiration', 'created_at', 'updated_at', 'deleted_at'];
protected $casts = [
'driver_expiration' => 'date',
];
日付(driver_expiration)を「01/012016」として保存しましたが、日付は0000-00-00に保存されます。
laravelのドキュメント: https://laravel.com/docs/5.1/eloquent-mutators $ dateFormatはタイムスタンプに対してのみ機能します( 'created_at'、 'updated_at'、 'deleted_at')
日付形式をキャストする代わりに、ミューテーターを使用して好きな形式を設定できます。
たとえば、列の名前がdate
である場合、次の関数をモデルに追加できます。
public function setDateAttribute( $value ) {
$this->attributes['date'] = (new Carbon($value))->format('d/m/y');
}
setDateAttribute
は、常にCamelCaseを使用したset[ColumnName]Attribute
形式です。 $this->attributes['date']
部分のdate
も、テーブル内の実際の列名と一致する必要があります。
データベース内のレコードをcreate
またはupdate
すると、上記の関数によってフォーマットが自動的に変更されます。
注:Carbonライブラリを使用するには、モデルの上部にuse Carbon\Carbon
ステートメントを追加する必要がある場合があります。
[〜#〜] update [〜#〜]
オプションで、次を使用してdate
列の形式を定義できます。
protected $dateFormat = 'Y-m-d';
laravel 5.6の後、
Eloquentの日付と日時のキャストの形式を個別にカスタマイズできます。
protected $casts = [
'birthday' => 'date:Y-m-d',
'joined_at' => 'datetime:Y-m-d H:00',
];
この形式は、モデルが配列またはJSONデータにシリアル化されるときに使用されます
モデルに追加するだけです:
protected function asDateTime($value)
{
return parent::asDateTime($value)->format('d/m/y');
}
このEloquentのメソッドは元々Carbonインスタンスを返すため、そのインスタンスを取得してformat()メソッドを呼び出すことができます。このソリューションをすべてのモデルに適用する場合、Eloquentから拡張された新しいクラスを作成し、このメソッドをそこに配置するだけで、この新しいクラスからモデルを拡張できます。
キャストはCollectionオブジェクトの影響を受けません。 jsonおよび配列形式に使用されます。使用できる個々のキャストが必要な場合
$user->date->format('m-d-Y');
新しいモデルプロパティを作成します。
protected $datesConvert = ['driver_expiration'];
そして、ベースモデルを次のように更新しました。
public function save(array $options = [])
{
if(isset($this->datesConvert)){
foreach($this->datesConvert as $date){
$this->attributes[$date] = \Carbon\Carbon::createFromFormat('d/m/Y', $this->attributes[$date])->format('Y-m-d');
}
}
parent::save($options);
}
public function getAttribute($key)
{
$value = parent::getAttribute($key);
if(isset($this->attributes[$key])){
if(isset($this->datesConvert) && in_array($key, $this->datesConvert)){
$value = \Carbon\Carbon::createFromFormat('Y-m-d', $value)->format('d/m/Y');
}
}
return $value;
}
そして、この解決策は私のために機能します。コードを特性に移動できます。フォーマットは$ datesConvert Format = 'd/m/Y'に入れることができます。