Laravel を使用する過程で、フィールドを変換する必要がある状況によく遭遇します。この記事では、フィールド変換タイプをカスタマイズする方法を含め、Laravel でのフィールド変換の基本について詳しく説明します。
Laravel のフィールド変換は、データベースに保存されたタイムスタンプ形式を人間が判読できる時刻形式に変換するなど、さまざまなビジネス ニーズを満たすためにモデル属性をある形式から別の形式に変換するために使用されます。
Laravel では、日付、時刻、JSON、配列などのフィールド変換型が豊富に用意されており、これらをモデル内で定義することで、モデルの属性を簡単に変換できます。 Laravel でフィールド変換タイプを定義する方法を見てみましょう:
namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { protected $casts = [ 'published_at' => 'datetime', 'meta' => 'array', ]; }
上の例では、published_at
をdatetime
タイプに変換し、meta
はarray
型に変換されます。このようにして、データベースからPost
モデルを取得すると、published_at
はCarbon
インスタンスとmeta
に自動的に変換されます。自動的に変換されるのは PHP 配列です。
Laravel の組み込みフィールド変換タイプに加えて、特定のビジネス ニーズに合わせてフィールド変換タイプをカスタマイズすることもできます。カスタム フィールド変換タイプの例を見てみましょう:
namespace App\Models; use Carbon\Carbon; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; class Price implements CastsAttributes { public function get($model, $key, $value, $attributes) { return $value / 100; } public function set($model, $key, $value, $attributes) { return $value * 100; } }
上の例では、モデルを変換するためにPrice
という名前のカスタム フィールド変換タイプを定義しました。プロパティは整数形式から変換されます。セント単位から人民元単位の浮動小数点形式に変換します。このうち、get
メソッドはデータベースから属性を読み取るときに変換するために使用され、set
メソッドは属性をデータベースに書き込むときに変換するために使用されます。
モデルでカスタム フィールド キャスト タイプを使用するには、$casts
属性でタイプを指定するだけです。
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Product extends Model { protected $casts = [ 'price' => Price::class, ]; }
上の例では、# を変換します。 ##price属性を
Priceタイプに追加すると、
Productモデルを取得すると、
priceがデータベースから自動的に読み取られて分割されます。単位では整数形式に変換され、元単位では浮動小数点形式に変換されます。
$posts = Post::where('published_at', '>', now()->subDays(7))->get();
published_atフィールドの値を
Carbonインスタンスに自動的に変換し、現在時刻と比較します。
以上がLaravelにおけるフィールド変換の基礎知識について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。