solarnsnowfall/mysql-db

一组简单的mysql包装器,用于自动化查询。

dev-master 2023-09-16 04:02 UTC

This package is auto-updated.

Last update: 2024-09-16 06:12:47 UTC


README

提供数据库连接的静态工厂创建。

// config.php
include 'vender/autoload.php';

use Solar\Db\DbConnection;

DbConnection::initialize([
  'host'      => 'host',
  'user'      => 'user',
  'password'  => '********',
  'database'  => 'database'
]);

然后,当你需要它时...

include 'config.php';

$db = DbConnection::getInstance();

提供仅强制使用预处理语句的包装器。

$stmt = $db->execute($sql, $params, $types);

$rows = $stmt->fetchAllAssoc();

通过扩展AbstractRow将表行映射到对象。

use Solar\Db\Table\Row\AbstractRow;

class User extends AbstractRow
{
  const TABLE = 'user';
  
  protected ?string $email = null;
  
  protected ?string $fullName = null;
  
  protected ?int $id = null;
}

使用表网关将行映射到您的对象。

use Solar\Db\Table\Gateway;

$gateway = new Gateway(User::TABLE);
$user = $gateway->fetchRow(['id' => 1], User::class);

使用智能魔法访问器和修改器访问属性。

class User extends AbstractRow
{
  const MAGIC_GETTERS   = true;
  const MAGIC_SETTERS   = true;
  const TABLE           = 'user';
  ...
}

Zend Db启发式查询自动化。这主要存在是为了方便表和行网关,但大多数日常查询都可以处理。

use Solar\Db\Sql\Sql;

$sql = new Sql();

$insert = $sql->insert();

$index = $insert->columns(['email', 'full_name'])
    ->into('user')
    ->set(['janedoe@gmail.com', 'Jane Doe'])
    ->execute();

或者直接从您的类中操作。

// Returns a fully formed primary key array.
$index = $user->setEmail($email)->setFullName($fullName)->insert();

使用快速的缓存模式接口了解您的数据库更多信息。

use Solar\Db\Table\Schema;

$table = Schema(User::TABLE);

$paramTypes = $table->getParamTypes($columns);