Dans Laravel, nous pouvons convertir le modèle en tableau via la méthode toArray()
. Cette méthode est très pratique car nous devons souvent renvoyer les données du modèle au client ou les utiliser dans des modèles. 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']; }
如果我们需要自定义模型对象的转化方法,可以在模型中实现 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
和 updated_at
两个属性的类型设置为 'timestamp',这样在将模型转化为数组时,这两个属性的值就会被转化成 Unix 时间戳。
在本文中,我们介绍了 Laravel 中如何将模型转化为数组,以及如何自定义数组的输出格式。除了 toArray()
方法之外,还可以使用自定义的 toArray()
方法和 $casts
toArray()
est la méthode la plus couramment utilisée dans Laravel pour convertir un modèle en tableau. Cette méthode convertira les attributs et les relations de l'objet modèle en un tableau, ce qui est très pratique pour la sortie vers le client. 🎜🎜Ce qui suit est un exemple d'utilisation de la méthode toArray()
pour convertir un modèle en tableau : 🎜rrreee🎜Dans cet exemple, nous l'obtenons via User::find(1)
Récupérez un objet utilisateur, puis utilisez la méthode toArray()
pour le convertir en tableau. 🎜🎜Le tableau converti ressemble généralement à ceci : 🎜rrreee🎜Vous pouvez voir que le tableau converti contient les principaux attributs du modèle et les relations associées. Si nous n'avons pas besoin de la relation associée, nous devons définir l'attribut $hidden
dans le modèle : 🎜rrreeetoArray()
dans le modèle. Cette méthode remplacera la méthode de conversion par défaut pour obtenir des effets de sortie personnalisés. 🎜🎜Ce qui suit est un exemple de méthode toArray()
personnalisée qui mélange les attributs de l'objet modèle et ne génère que certains des attributs : 🎜rrreee🎜Dans cet exemple, nous appelons d'abord la classe parent Méthode toArray() pour obtenir le résultat de conversion par défaut. Ensuite, nous utilisons la méthode shuffle()
pour mélanger les clés du tableau, et seuls certains attributs sont affichés. 🎜🎜Le résultat de sortie de cette méthode toArray()
personnalisée peut ressembler à ceci : 🎜rrreee$casts
pour atteindre cet objectif. L'attribut $casts
est un tableau, la clé est le nom de l'attribut du modèle et la valeur est le format à convertir. 🎜🎜Voici un exemple d'utilisation de l'attribut $casts
pour afficher l'attribut de date d'un modèle sous forme d'horodatage Unix : 🎜rrreee🎜Dans cet exemple, nous combinons created_at
et updated_at
Le type des deux propriétés est défini sur 'timestamp', de sorte que lorsque le modèle est converti en tableau, les valeurs de ces deux propriétés seront converties en horodatages Unix. 🎜toArray()
, vous pouvez également utiliser la méthode personnalisée toArray()
et l'attribut $casts
pour obtenir un tableau plus flexible. conversion. La maîtrise de ces méthodes nous permettra de gérer plus facilement la transformation du modèle pendant le développement. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!