Medoo 数据库

webman/medoo добавляет функцию пула соединений на основе Medoo и поддерживает как корутины, так и некорутинируемую среду, используя тот же синтаксис, что и Medoo.

注意
Настоящее руководство относится к версии webman v2. Если вы используете версию webman v1, пожалуйста, обратитесь к руководству v1

Установка

composer require webman/medoo

Настройка базы данных Medoo

Местоположение конфигурационного файла: config/plugin/webman/medoo/database.php

Использование базы данных 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);
    }
}

提示
Medoo::get('user', '*', ['uid' => 1]);
эквивалентно
Medoo::instance('default')->get('user', '*', ['uid' => 1]);

Настройка нескольких баз данных Medoo

Конфигурация
В config/plugin/webman/medoo/database.php добавьте новую конфигурацию, ключ может быть произвольным, здесь используется 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' => [ // Конфигурация пула соединений
            'max_connections' => 5, // Максимальное количество соединений
            'min_connections' => 1, // Минимальное количество соединений
            'wait_timeout' => 60,   // Максимальное время ожидания получения соединения из пула, по истечении времени будет выброшено исключение
            'idle_timeout' => 3,    // Максимальное время простоя соединения в пуле, по истечении времени соединение будет закрыто и возвращено в пул, пока количество соединений не станет равным min_connections
            'heartbeat_interval' => 50, // Время проверки пульса пула соединений, в секундах, рекомендовано менее 60 секунд
        ]
    ],
    // Здесь добавлена конфигурация 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,
        ],
    ],
];

Использование базы данных Medoo

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

См. также Официальная документация Medoo