私はLaravelで中規模の大規模システムを構築しています。それはおよそ120のテーブルを持ち、おそらく70人にCRUDを持っています。これらのCRUDSにはすべて問題があります。私は、この種のミューテータを定義する必要があり、文字列型でないNULL可能フィールド持つたび:ので、もしフロントエンドにフォームフィールドが必要とされていないので、タイプエラーを避けるためにnull可能なフィールドのミューテータを定義する必要があります
public function setCollectionIdAttribute($value)
{
$this->attributes['collection_id'] = $value ?: null;
}
public function setCompletedAtAttribute($value)
{
$this->attributes['completed_at'] = $value ?: null;
}
は、私はこれをしなければなりませんユーザーがフィールドを埋めることはありません。バックエンドが受け取る値は空の文字列なので、これをデータベースに保存しようとするとエラーがスローされるので、上記の関数は値をチェックしてnullに設定します。
Laravelはこれを行うためのより良い方法を提供しますか?なぜなら、文字列型ではないnull可能なフィールドがあるたびに、これらの関数を定義する必要があるため、たくさんのフォームがあり、クールではないからです。
はい、これはMySQL(またはLaravelでサポートされている他のデータベース)で呼び出されます。 – Kyslik
デフォルト値では問題は解決しません。問題は、Laravelが空文字列( "")を文字列以外のフィールドに挿入しようとしていることです。 null可能フィールドを定義するたびに、デフォルトにnullが設定されます。 – Alan
私はあなたの苦労を見て、MySQLでデフォルト値を使用し、空の文字列があればそのような属性を配列から削除するようにリクエストデータを変更します。 – Kyslik