Doctrine ORM 是一个流行的 PHP 对象关系映射(ORM)库,它将数据库中的数据与 PHP 类关联起来,允许开发者以面向对象的方式处理数据库操作。这款强大的工具为开发人员提供了一种简洁的 API,可以方便地进行数据查询、持久化和事务管理。
Doctrine 提供了一个直观且易于使用的 API,使得开发人员可以在不了解底层 SQL 查询的情况下完成大部分数据库操作。
通过 Doctrine ORM,您可以定义实体类来表示您的数据库表,并使用注释或 YAML 文件来描述它们之间的关系。这使得您可以用更符合自然语言的方式来思考问题,而不是受限于 SQL 的语法。
Doctrine 提供了 QueryBuilder 和 DQL( Doctrine Query Language),它们提供了简单的接口来构建复杂的数据查询。DQL 类似于 SQL,但更具面向对象性,使得您能够更容易地编写跨多个表的查询。
Doctrine ORM 支持多种数据库系统,包括 MySQL、PostgreSQL、SQLite 等。这意味着无论您的应用程序选择了哪种数据库,都可以轻松地利用 Doctrine ORM 进行数据处理。
当实体类发生变化时, Doctrine ORM 可以自动检测这些变化并更新数据库结构,从而节省手动修改数据库的时间。
您可以通过Composer安装库
composer require doctrine/orm
<?php
/**
* @desc demo1.php
* @author Tinywan(ShaoBo Wan)
* @date 2024/5/23 20:41
*/
declare(strict_types=1);
require_once 'vendor/autoload.php';
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\Tools\Setup;
$paths = array(__DIR__ . '/src');
$isDevMode = true;
$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
$entityManager = EntityManager::create(array(
'driver' => 'pdo_mysql',
'host' => 'localhost',
'dbname' => 'my_database',
'user' => 'tinywan',
'password' => '123456',
), $config);
class UserModel
{
/**
* @var int
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
* @ORM\Column(type="integer")
*/
private int $id;
/**
* @var string
* @ORM\Column(name="username", type="string", length=100)
*/
private string $username;
}
// 操作数据库
$user = new UserModel();
$user->setUsername('Tinywan');
$entityManager->persist($user);
$entityManager->flush();
$users = $entityManager->getRepository(UserModel::class)->findAll();
foreach ($users as $user) {
echo "[x] id: {$user->getId()}, username: {$user->getUsername()}" . PHP_EOL;
}