Maison  >  Article  >  cadre php  >  Comment vérifier une ou plusieurs tables dans Laravel

Comment vérifier une ou plusieurs tables dans Laravel

PHPz
PHPzoriginal
2023-05-20 18:53:07865parcourir

Dans Laravel, nous avons souvent besoin d'utiliser des bases de données relationnelles pour stocker et gérer des données, et les relations un-à-plusieurs sont les plus courantes. Une relation un-à-plusieurs fait référence à une relation dans laquelle un modèle a plusieurs modèles associés. Elle est généralement utilisée pour mettre en œuvre certains scénarios commerciaux courants, tels qu'un utilisateur correspondant à plusieurs commandes ou un cours correspondant à plusieurs étudiants.

Dans Laravel, nous pouvons utiliser Eloquent ORM pour implémenter une requête de relation un-à-plusieurs. Ci-dessous, je présenterai en détail comment utiliser le modèle Eloquent dans Laravel pour interroger la relation un-à-plusieurs entre trois tables.

  1. Concevoir trois tables

Tout d'abord, nous devons concevoir trois tables, à savoir la table principale, la sous-table et la table d'association de clé étrangère de sous-table. Voici la conception de l'exemple de table :

Table principale : utilisateurs

id name email
1 Tom tom@laravel.com
2 Jerry jerry@laravel.com
3 Bob bob@laravel.com

Sous-tableau : commandes

id order_no user_id
1 1001 1
2 1002 2
3 1003 3
4 1004 1

Sous-tableau table associée aux clés étrangères :order_items

id order_id product_name
1 1 apple
2 1 banane
3 2 poire
4 4 orange
5 4 grape
  1. Création de modèles Laravel

Dans Laravel, nous devons créer trois modèles, correspondant à trois tableaux respectivement. Lors de la création d'un modèle, nous devons définir les relations entre les modèles.

Modèle de table principale : Utilisateur

class User extends Model
{
    public function orders()
    {
        return $this->hasMany(Order::class);
    }
}

Modèle de sous-table : Order

class Order extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function items()
    {
        return $this->hasMany(OrderItem::class);
    }
}

Modèle de table associé à la clé étrangère de sous-table : OrderItem

class OrderItem extends Model
{
    public function order()
    {
        return $this->belongsTo(Order::class);
    }
}
  1. Requête d'une relation un-à-plusieurs

Dans Laravel, nous pouvons utiliser Eloquent ORM pour implémentez une requête de relation un-à-plusieurs. Ce qui suit est un exemple de code pour interroger toutes les commandes d'un utilisateur et tous les articles de commande passés par lui :

$user = User::find(1);

foreach ($user->orders as $order) {
    echo $order->order_no;

    foreach ($order->items as $item) {
        echo $item->product_name;
    }
}

Le code ci-dessus affichera toutes les commandes de l'utilisateur Tom et tous les articles de commande passés par lui.

Nous pouvons également utiliser directement la méthode de préchargement associée d'Eloquent pour interroger un utilisateur, ses commandes et tous les éléments de campagne placés sous lui :

$user = User::with('orders.items')->find(1);

foreach ($user->orders as $order) {
    echo $order->order_no;

    foreach ($order->items as $item) {
        echo $item->product_name;
    }
}

Le code ci-dessus affichera toutes les commandes de l'utilisateur Tom et tous les éléments de commande placés sous elles, et Par rapport à la méthode ci-dessus, cette méthode offre de meilleures performances.

  1. Résumé

Dans Laravel, nous pouvons utiliser Eloquent ORM pour implémenter très facilement une requête de relation un-à-plusieurs. Tant que la relation est définie dans le modèle, vous pouvez facilement obtenir toutes les données associées du modèle spécifié. Dans le même temps, nous pouvons également utiliser la méthode de préchargement associée pour optimiser les performances des requêtes et rendre nos applications plus efficaces et plus stables.

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!

Déclaration:
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