Maison > cadre php > Swoole > Comment utiliser le framework Hyperf pour les requêtes inter-bases de données

Comment utiliser le framework Hyperf pour les requêtes inter-bases de données

WBOY
Libérer: 2023-10-20 17:36:34
original
1477 Les gens l'ont consulté

Comment utiliser le framework Hyperf pour les requêtes inter-bases de données

Comment utiliser le framework Hyperf pour les requêtes inter-bases de données

Introduction :
Avec le développement d'applications, nous avons souvent besoin d'interroger entre plusieurs bases de données. Par exemple, dans une application de commerce électronique, nous pouvons avoir besoin d'interroger des informations sur les produits (stockées dans une base de données) et des informations sur les utilisateurs (stockées dans une autre base de données). Lors du développement d'applications à l'aide du framework Hyperf, les requêtes inter-bases de données peuvent également être facilement mises en œuvre.

Cet article expliquera comment utiliser le framework Hyperf pour effectuer des requêtes inter-bases de données et fournira des exemples de code spécifiques.

1. Configurer plusieurs connexions à la base de données
Tout d'abord, nous devons configurer plusieurs connexions à la base de données dans le fichier de configuration du framework Hyperf (config/autoload/database.php). Par exemple, nous avons configuré deux connexions : "database1" et "database2", correspondant à deux bases de données.

return [
    'default' => env('DB_DRIVER', 'mysql'),
    'connections' => [
        'database1' => [
            'driver' => env('DB_DRIVER', 'mysql'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', 3306),
            'database' => env('DB_DATABASE1', 'database1'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_general_ci',
            'prefix' => '',
            'pool' => [
                'min_connections' => 1,
                'max_connections' => 10,
                'connect_timeout' => 10.0,
                'wait_timeout' => 3.0,
                'heartbeat' => -1,
                'max_idle_time' => (float)env('DB_MAX_IDLE_TIME', 60),
            ],
            'options' => [
                // ...
            ],
        ],
        'database2' => [
            'driver' => env('DB_DRIVER', 'mysql'),
            'host' => env('DB_HOST', 'localhost'),
            'port' => env('DB_PORT', 3306),
            'database' => env('DB_DATABASE2', 'database2'),
            'username' => env('DB_USERNAME', 'root'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_general_ci',
            'prefix' => '',
            'pool' => [
                'min_connections' => 1,
                'max_connections' => 10,
                'connect_timeout' => 10.0,
                'wait_timeout' => 3.0,
                'heartbeat' => -1,
                'max_idle_time' => (float)env('DB_MAX_IDLE_TIME', 60),
            ],
            'options' => [
                // ...
            ],
        ],
    ],
];
Copier après la connexion

2. Configurer la connexion à la base de données associée au modèle
Dans le framework Hyperf, nous pouvons spécifier la connexion à la base de données associée au modèle en définissant les propriétés du modèle. Par exemple, nous avons un modèle de produit Product, qui est associé à la connexion à la base de données "database1":

namespace AppModel;

use HyperfDatabaseModelModel;

class Product extends Model
{
    protected $connection = 'database1';
    
    // ...
}
Copier après la connexion

De même, dans le modèle utilisateur User, nous le définissons pour qu'il soit associé à la connexion à la base de données "database2":

namespace AppModel;

use HyperfDatabaseModelModel;

class User extends Model
{
    protected $connection = 'database2';
    
    // ...
}
Copier après la connexion

3 . Effectuer des requêtes entre bases de données
Avec les préparations ci-dessus, nous pouvons effectuer des requêtes entre bases de données dans le contrôleur ou ailleurs. Un exemple est donné ci-dessous pour montrer comment interroger les données dans la table product et la table user.

namespace AppController;

use AppModelProduct;
use AppModelUser;
use HyperfHttpServerAnnotationController;
use HyperfHttpServerAnnotationGetMapping;

/**
 * @Controller()
 */
class CrossDatabaseController
{
    /**
     * @GetMapping(path="/cross-database")
     */
    public function crossDatabase()
    {
        // 查询商品信息
        $product = Product::query()->where('id', 1)->first();
        echo "商品名称:" . $product->name . "
";
        
        // 查询用户信息
        $user = User::query()->where('id', 1)->first();
        echo "用户名:" . $user->name . "
";
    }
}
Copier après la connexion

Dans l'exemple ci-dessus, nous avons interrogé différentes bases de données via le modèle Produit et le modèle Utilisateur respectivement, réalisant une requête inter-bases de données.

Conclusion :
Cet article explique comment utiliser le framework Hyperf pour effectuer des requêtes inter-bases de données. En configurant plusieurs connexions de base de données et en configurant des connexions de base de données associées au modèle, nous pouvons facilement implémenter des fonctions de requête entre bases de données. En maîtrisant cette compétence, nous pouvons mieux gérer l'association de données et les requêtes entre plusieurs bibliothèques de l'application et améliorer l'efficacité du 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