Medoo Cơ Sở Dữ Liệu

webman/medoo đã thêm tính năng kết nối hồ bơi lên Medoo và hỗ trợ cả môi trường hợp tác (coroutine) và không hợp tác (non-coroutine), cách sử dụng giống như Medoo.

Lưu ý
Hướng dẫn hiện tại là phiên bản webman v2, nếu bạn đang sử dụng phiên bản webman v1, vui lòng xem hướng dẫn phiên bản v1

Cài đặt

composer require webman/medoo

Cấu hình Cơ Sở Dữ Liệu Medoo

Vị trí tệp cấu hình nằm ở config/plugin/webman/medoo/database.php

Sử Dụng Cơ Sở Dữ Liệu Medoo

<?php
namespace app\controller;

use support\Request;
use support\Medoo;

class Index
{
    public function index(Request $request)
    {
        $user = Medoo::get('user', '*', ['uid' => 1]);
        return json($user);
    }
}

Gợi ý
Medoo::get('user', '*', ['uid' => 1]);
Tương đương với
Medoo::instance('default')->get('user', '*', ['uid' => 1]);

Cấu Hình Nhiều Cơ Sở Dữ Liệu Medoo

Cấu hình
Thêm một cấu hình mới trong config/plugin/webman/medoo/database.php, key có thể đặt tùy ý, ở đây sử dụng other.

<?php
return [
    'default' => [
        'type' => 'mysql',
        'host' => 'localhost',
        'database' => 'database',
        'username' => 'username',
        'password' => 'password',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_general_ci',
        'port' => 3306,
        'prefix' => '',
        'logging' => false,
        'error' => PDO::ERRMODE_EXCEPTION,
        'option' => [
            PDO::ATTR_CASE => PDO::CASE_NATURAL
        ],
        'command' => [
            'SET SQL_MODE=ANSI_QUOTES'
        ],
        'pool' => [ // Cấu hình hồ bơi kết nối
            'max_connections' => 5, // Số kết nối tối đa
            'min_connections' => 1, // Số kết nối tối thiểu
            'wait_timeout' => 60,   // Thời gian chờ tối đa để nhận kết nối từ hồ bơi, sau thời gian này sẽ ném ra ngoại lệ
            'idle_timeout' => 3,    // Thời gian không hoạt động tối đa của kết nối trong hồ bơi, sau thời gian này sẽ đóng và thu hồi, cho đến khi số kết nối bằng min_connections
            'heartbeat_interval' => 50, // Thời gian kiểm tra kết nối trong hồ bơi, đơn vị giây, khuyến nghị nhỏ hơn 60 giây
        ]
    ],
    // Ở đây đã thêm một cấu hình other
    'other' => [
        'type' => 'mysql',
        'host' => 'localhost',
        'database' => 'database',
        'username' => 'username',
        'password' => 'password',
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_general_ci',
        'port' => 3306,
        'prefix' => '',
        'logging' => false,
        'error' => PDO::ERRMODE_EXCEPTION,
        'option' => [
            PDO::ATTR_CASE => PDO::CASE_NATURAL
        ],
        'command' => [
            'SET SQL_MODE=ANSI_QUOTES'
        ],
        'pool' => [
            'max_connections' => 5,
            'min_connections' => 1,
            'wait_timeout' => 60,
            'idle_timeout' => 3,
            'heartbeat_interval' => 50,
        ],
    ],
];

Sử Dụng Cơ Sở Dữ Liệu Medoo

$user = Medoo::instance('other')->get('user', '*', ['uid' => 1]);

Xem Tài liệu chính thức của Medoo