thephpleague/database

PHP 库和 ORM,用于处理数据库连接,执行 C.R.U.D. 操作

v1.1.2 2017-12-12 17:32 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:01:36 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score

PHP 库和 ORM,用于处理数据库连接,执行 C.R.U.D. 操作。

安装

通过 Composer

$ composer require thephpleague/database

用法

$config = [
    'host'      => 'localhost',
    'port'      => 3306,
    'database'  => 'master_db',
    'username'  => 'root',
    'password'  => '',
];

$connection = new League\Database\ConnectionManager('core', $config);

BulkSql 用法

在脚本中,当需要插入大量记录时,批量 SQL 类可能会有用。

示例 1

`BulkInsert` 用法
use League\Database\BulkSql\BulkInsert;

$db = $connection->getMasterConnection();

$bulkInsert = new BulkInsert($db, 'users');
$bulkInsert
    ->setItemsPerQuery(50)
    ->useIgnore()
    ->disableIndexes();

try {
    $db->beginTransaction();
    
    foreach ($users as $user) {
        $bulkInsert->add($user);
    }
    
    $bulkInsert->finish();
    $affectedCount = $bulkInsert->getAffectedCount();
    
    $db->commit();
} catch (\PDOException $e) {
    $db->rollBack();
}

示例 2

`BulkReplace` 和 `BulkDelete` 用法(与数据源一起使用可能很有用)
use League\Database\BulkSql\BulkReplace;
use League\Database\BulkSql\BulkDelete;

$db = $connection->getMasterConnection();

$bulkReplace = new BulkReplace($db, 'offers');
$bulkReplace->setItemsPerQuery(500);
$bulkDelete = new BulkDelete($db, 'offers');
$bulkDelete->setItemsPerQuery(1000);

try {
    $db->beginTransaction();
    
    foreach ($offers as $offer) {
        $flag = $offer['deltaStatus'] ?? null;
        
        switch ($delta) {
            case 'REMOVE':
                $bulkDelete->add(['id' => $data['id']]);
                break;
            case 'ADD':
                $bulkReplace->add($data);
                break;
            default:
                $logger->notice("Unsupported delta flag \"{$flag}\"";
        }
    }

    $bulkReplace->finish();
    $bulkDelete->finish();
    
    $db->commit();
    
    $insertsCount = $bulkReplace->getInsertedCount();
    $updatesCount = $bulkReplace->getReplacedCount();
    $deletesCount = $bulkDelete->getAffectedCount();
} catch (\PDOException $e) {
    $db->rollBack();
}

变更日志

请参阅 CHANGELOG 了解最近更改的详细信息。

测试

$ composer test

贡献

请参阅 CONTRIBUTINGCODE_OF_CONDUCT 了解详细信息。

安全

如果您发现任何与安全相关的问题,请通过电子邮件 sergey.podgornyy@yahoo.de 联系,而不是使用问题跟踪器。

致谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件