laravelでモデルを配列に変換する3つの方法の簡単な分析

PHPz
リリース: 2023-04-03 19:35:40
オリジナル
1621 人が閲覧しました

Laravel では、toArray() メソッドを通じてモデルを配列に変換できます。モデル データをクライアントに返したり、テンプレートで使用したりする必要がよくあるため、この方法は非常に便利です。

ただし、実際の開発では、配列の出力形式をカスタマイズする必要がある特殊な状況に遭遇することがあります。 Laravelでモデルを配列に変換する方法と、配列の出力形式をカスタマイズする方法を紹介します。

toArray() メソッドを使用する

toArray() メソッドは、Laravel でモデルを配列に変換するために最も一般的に使用されるメソッドです。このメソッドは、モデル オブジェクトの属性と関係を配列に変換します。これは、クライアントへの出力に非常に便利です。

以下は、toArray() メソッドを使用してモデルを配列に変換する例です:

$user = User::find(1);
$array = $user->toArray();
ログイン後にコピー

この例では、User を使用します。 :find( 1) ユーザー オブジェクトを取得し、toArray() メソッドを使用して配列に変換します。

変換された配列は通常次のようになります:

[
    'id' => 1,
    'name' => '张三',
    'email' => 'zhangsan@example.com',
    'created_at' => '2021-01-01 00:00:00',
    'updated_at' => '2021-01-01 00:00:00',
    'articles' => [
        [
            'id' => 1,
            'title' => '文章标题',
            'content' => '文章内容',
            'created_at' => '2021-01-01 00:00:00',
            'updated_at' => '2021-01-01 00:00:00',
        ],
        ...
    ],
]
ログイン後にコピー

ご覧のとおり、変換された配列にはモデルの主要な属性と関連する関係が含まれています。関連する関係が必要ない場合は、モデルで $hidden 属性を定義する必要があります:

class User extends Model
{
    protected $hidden = ['articles'];
}
ログイン後にコピー

Customized toArray() method

カスタマイズする必要がある場合モデル オブジェクトの Conversion メソッドを使用すると、モデルに toArray() メソッドを実装できます。このメソッドはデフォルトの変換メソッドをオーバーライドして、カスタマイズされた出力効果を実現します。

以下は、モデル オブジェクトのプロパティをシャッフルし、一部のプロパティのみを出力するカスタム toArray() メソッドの例です。

class User extends Model
{
    protected $hidden = ['articles'];

    public function toArray()
    {
        $array = parent::toArray();
        $keys = array_keys($array);
        shuffle($keys);
        $newArray = [];

        foreach ($keys as $key) {
            if (in_array($key, ['id', 'name', 'email', 'created_at'])) {
                $newArray[$key] = $array[$key];
            }
        }

        return $newArray;
    }
}
ログイン後にコピー

この例では、 , まず、親クラスの toArray() メソッドを呼び出して、デフォルトの変換結果を取得します。次に、shuffle() メソッドを使用して配列内のキーをシャッフルし、最終的に一部の属性のみが出力されます。

このカスタム toArray() メソッドの出力は次のようになります:

[
    'name' => '张三',
    'email' => 'zhangsan@example.com',
    'id' => 1,
    'created_at' => '2021-01-01 00:00:00',
]
ログイン後にコピー

$casts 属性を使用します

場合によっては、モデルの属性は、日付を指定された形式にフォーマットしたり、JSON 文字列を配列に変換したりするなど、特定の形式で出力する必要があります。

Laravel では、$casts 属性を使用してこの目的を達成できます。 $casts 属性は配列、キーはモデルの属性名、値は変換される形式です。

これは、$casts 属性を使用してモデルの日付属性を Unix タイムスタンプとして出力する例です:

class MyModel extends Model
{
    protected $casts = [
        'created_at' => 'timestamp',
        'updated_at' => 'timestamp',
    ];
}
ログイン後にコピー

この例では、created_at 2 つの属性 updated_at のタイプは「timestamp」に設定されているため、モデルが配列に変換されると、これら 2 つの属性の値は Unix タイムスタンプに変換されます。

まとめ

この記事では、Laravelでモデルを配列に変換する方法と、配列の出力形式をカスタマイズする方法を紹介しました。 toArray() メソッドに加えて、カスタム toArray() メソッドと $casts 属性を使用して、より柔軟な配列変換を実現することもできます。これらの方法に習熟すると、開発中にモデル変換をより簡単に処理できるようになります。

以上がlaravelでモデルを配列に変換する3つの方法の簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート