Maison > cadre php > Laravel > Une brève analyse de trois méthodes de conversion de modèles en tableaux dans Laravel

Une brève analyse de trois méthodes de conversion de modèles en tableaux dans Laravel

PHPz
Libérer: 2023-04-03 19:35:40
original
1660 Les gens l'ont consulté

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() 方法

toArray() 方法是 Laravel 中将模型转化为数组的最常用的方法。这个方法会将模型对象的属性以及关联关系转化为一个数组,非常方便地用于输出给客户端。

下面是一个使用 toArray() 方法将模型转化成数组的示例:

$user = User::find(1);
$array = $user->toArray();
Copier après la connexion

在这个例子中,我们通过 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',
        ],
        ...
    ],
]
Copier après la connexion

可以看到,转化后的数组包含了模型主要的属性以及关联的关系。如果我们不需要关联的关系,需要在模型中定义 $hidden 属性:

class User extends Model
{
    protected $hidden = ['articles'];
}
Copier après la connexion

自定义 toArray() 方法

如果我们需要自定义模型对象的转化方法,可以在模型中实现 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;
    }
}
Copier après la connexion

在这个示例中,我们首先调用父类的 toArray() 方法,获取默认的转化结果。然后,我们使用 shuffle() 方法将数组中的键打乱顺序,最后只输出了部分属性。

这个自定义 toArray() 方法的输出结果可能长这样:

[
    'name' => '张三',
    'email' => 'zhangsan@example.com',
    'id' => 1,
    'created_at' => '2021-01-01 00:00:00',
]
Copier après la connexion

使用 $casts 属性

在某些情况下,我们需要将模型的某些属性以特定的形式输出,比如将日期格式化为指定的格式,或者将 JSON 字符串转化为数组。

在 Laravel 中,可以使用 $casts 属性实现这个目的。$casts 属性是一个数组,其中的键是模型的属性名,值是要转化的格式。

下面是一个使用 $casts 属性将模型的日期属性输出为 Unix 时间戳的示例:

class MyModel extends Model
{
    protected $casts = [
        'created_at' => 'timestamp',
        'updated_at' => 'timestamp',
    ];
}
Copier après la connexion

在这个示例中,我们将 created_atupdated_at 两个属性的类型设置为 'timestamp',这样在将模型转化为数组时,这两个属性的值就会被转化成 Unix 时间戳。

总结

在本文中,我们介绍了 Laravel 中如何将模型转化为数组,以及如何自定义数组的输出格式。除了 toArray() 方法之外,还可以使用自定义的 toArray() 方法和 $casts

Cependant, dans le développement réel, nous pouvons rencontrer des situations particulières dans lesquelles nous devons personnaliser le format de sortie du tableau. Voyons comment convertir le modèle en tableau dans Laravel et comment personnaliser le format de sortie du tableau. 🎜

Utiliser la méthode toArray()

🎜La méthode 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 : 🎜rrreee

Méthode toArray() personnalisée

🎜Si nous devons personnaliser la conversion méthode de l'objet modèle, vous pouvez implémenter la méthode toArray() 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

Utiliser l'attribut $casts

🎜Dans certains cas, nous devons convertir certaines parties du Les propriétés du modèle sont affichées sous une forme spécifique, comme le formatage d'une date dans un format spécifié ou la conversion d'une chaîne JSON en tableau. 🎜🎜Dans Laravel, vous pouvez utiliser l'attribut $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. 🎜

Résumé

🎜Dans cet article, nous avons présenté comment convertir le modèle en tableau dans Laravel et comment personnaliser le format de sortie du tableau. En plus de la méthode 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal