solarnsnowfall /mysql-db
一组简单的mysql包装器,用于自动化查询。
dev-master
2023-09-16 04:02 UTC
Requires
- ext-ctype: *
- ext-json: *
- ext-memcache: *
- ext-mysqli: *
- solarsnowfall/reflection-factory: *
- solarsnowfall/string-convention: *
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);