ホームページ >PHPフレームワーク >Laravel >Laravelにおけるフィールド変換の基礎知識について話しましょう

Laravelにおけるフィールド変換の基礎知識について話しましょう

PHPz
PHPzオリジナル
2023-04-06 16:48:171049ブラウズ

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_atdatetime タイプに変換し、 metaarray 型に変換されます。このようにして、データベースから Post モデルを取得すると、published_atCarbon インスタンスと 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();
上の例では、過去 7 日間に公開された記事をクエリします。 Laravel は、

published_at フィールドの値を Carbon インスタンスに自動的に変換し、現在時刻と比較します。

つまり、フィールド変換は Laravel の非常に重要な機能であり、さまざまなビジネス ニーズを満たすためにモデル属性を簡単に変換するのに役立ちます。この記事の紹介により、読者の皆様には Laravel におけるフィールド変換の基礎知識をご理解いただけたと思います。また、読者が実際のプロジェクトで Laravel を使用する際の一助になれば幸いです。

以上がLaravelにおけるフィールド変換の基礎知識について話しましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。