Rumah > rangka kerja php > Swoole > Cara menggunakan rangka kerja Hyperf untuk pertanyaan silang pangkalan data

Cara menggunakan rangka kerja Hyperf untuk pertanyaan silang pangkalan data

WBOY
Lepaskan: 2023-10-20 17:36:34
asal
1464 orang telah melayarinya

Cara menggunakan rangka kerja Hyperf untuk pertanyaan silang pangkalan data

Cara menggunakan rangka kerja Hyperf untuk pertanyaan silang pangkalan data

Pengenalan:
Dengan pembangunan aplikasi, kami sering memerlukan untuk Pertanyaan antara pangkalan data. Sebagai contoh, dalam aplikasi e-dagang, kita mungkin perlu menanyakan maklumat produk (disimpan dalam satu pangkalan data) dan maklumat pengguna (disimpan dalam pangkalan data lain). Apabila membangunkan aplikasi menggunakan rangka kerja Hyperf, pertanyaan silang pangkalan data juga boleh dilaksanakan dengan mudah.

Artikel ini akan memperkenalkan cara menggunakan rangka kerja Hyperf untuk melaksanakan pertanyaan silang pangkalan data dan memberikan contoh kod khusus.

1 Konfigurasikan berbilang sambungan pangkalan data
Pertama, kita perlu mengkonfigurasi berbilang sambungan pangkalan data dalam fail konfigurasi rangka kerja Hyperf (config/autoload/database.php). Sebagai contoh, kami mengkonfigurasi dua sambungan: "pangkalan data1" dan "pangkalan data2", sepadan dengan dua pangkalan data.

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' => [
                // ...
            ],
        ],
    ],
];
Salin selepas log masuk

2 Konfigurasikan sambungan pangkalan data yang berkaitan dengan model
Dalam rangka kerja Hyperf, kami boleh menentukan sambungan pangkalan data yang dikaitkan dengan model dengan menetapkan atribut model. Sebagai contoh, kami mempunyai model produk Produk, yang dikaitkan dengan sambungan pangkalan data "database1":

namespace AppModel;

use HyperfDatabaseModelModel;

class Product extends Model
{
    protected $connection = 'database1';
    
    // ...
}
Salin selepas log masuk

Begitu juga, dalam model pengguna Pengguna, kami menetapkannya untuk dikaitkan dengan sambungan pangkalan data "database2 ": #🎜🎜 #

namespace AppModel;

use HyperfDatabaseModelModel;

class User extends Model
{
    protected $connection = 'database2';
    
    // ...
}
Salin selepas log masuk

3. Lakukan pertanyaan silang pangkalan data

Dengan persediaan di atas, kami boleh melakukan pertanyaan silang pangkalan data dalam pengawal atau tempat lain. Contoh diberikan di bawah untuk menunjukkan cara membuat pertanyaan data dalam jadual produk dan jadual pengguna.

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 . "
";
    }
}
Salin selepas log masuk
Dalam contoh di atas, kami menanyakan pangkalan data yang berbeza melalui model Produk dan model Pengguna untuk mencapai pertanyaan silang pangkalan data.

Kesimpulan:

Artikel ini memperkenalkan cara menggunakan rangka kerja Hyperf untuk melaksanakan pertanyaan silang pangkalan data. Dengan mengkonfigurasi berbilang sambungan pangkalan data dan menyediakan sambungan pangkalan data berkaitan model, kami boleh melaksanakan fungsi pertanyaan silang pangkalan data dengan mudah. Menguasai kemahiran ini, kami boleh mengendalikan perkaitan data dan pertanyaan dengan lebih baik antara berbilang perpustakaan dalam aplikasi dan meningkatkan kecekapan pembangunan.

Atas ialah kandungan terperinci Cara menggunakan rangka kerja Hyperf untuk pertanyaan silang pangkalan data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan