Laravel では、toArray()
メソッドを通じてモデルを配列に変換できます。モデル データをクライアントに返したり、テンプレートで使用したりする必要がよくあるため、この方法は非常に便利です。
ただし、実際の開発では、配列の出力形式をカスタマイズする必要がある特殊な状況に遭遇することがあります。 Laravelでモデルを配列に変換する方法と、配列の出力形式をカスタマイズする方法を紹介します。
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']; }
カスタマイズする必要がある場合モデル オブジェクトの 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', ]
場合によっては、モデルの属性は、日付を指定された形式にフォーマットしたり、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 サイトの他の関連記事を参照してください。