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
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' => [ // ... ], ], ], ];
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'; // ... }
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'; // ... }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 . " "; } }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!