baraja-core/doctrine

此软件包最新版本(v3.7.5)没有可用的许可信息。

Doctrine 到 Nette 3.0 的性能最佳端口。

v3.7.5 2024-06-09 20:09 UTC

README


BRJ 组织

Baraja Doctrine 数据库 📚

Integrity check

一个简单易用,性能最优,且与 Doctrine 连接的数据库层,允许您使用 OOP 的所有优势,同时也支持 Nette 3

此软件包会自动将 Doctrine 安装到您的项目中(同时在配置中也设置了所有内容),并稳定运行。

🐛 最佳调试 Tracy 面板

此软件包包含调试您的应用程序和 SQL 查询的最先进本地工具。您可以非常轻松地查看执行的查询,直接点击它们的原始调用位置,并查看输出中的时间图(带有分析慢查询的可能性)。查询类型以单独的格式显示,以便快速控制数据流。

Baraja Doctrine debug Tracy panel

该软件包还包括通过 Tracy Bluescreen 调试损坏的实体和查询的高级逻辑。使用调试器会自动开启,您将永远不会丢失任何有用信息。

📦 安装与基本用法

您可以使用包管理器安装此软件包,它也是 Baraja 沙盒 的一部分。如果您没有使用它,您将需要按照此指南手动安装软件包。

模型配置可以在软件包根目录下的 common.neon 文件中找到。

要手动安装软件包,请调用 Composer 并执行以下命令

$ composer require baraja-core/doctrine

在项目的 common.neon 中,您必须定义数据库凭证。此软件包中 common.neon 文件内的完整配置示例。您可以使用 baraja.database 扩展简单地定义配置。

例如

baraja.database:
   connection:
      host: 127.0.0.1
      dbname: sandbox
      user: root
      password: root

目前,该软件包仅支持连接到一个数据库。

可能的连接选项:urlpdomemorydriverdriverClassdriverOptionsunix_sockethostportdbnameservicenameuserpasswordcharsetportabilityfetchCasepersistenttypestypesMappingwrapperClass

⚙️ 驱动程序

默认情况下,Doctrine 使用 MySql 驱动程序。

例如,您可以将其重写为 Postgres

在您的 common.neon 中简单类型

baraja.database:
   connection:
      driverClass: Doctrine\DBAL\Driver\PDO\PgSQL\Driver

🗺️ 实体映射

为了使 Doctrine 了解哪些类是 实体,哪些是 应用程序逻辑,有必要设置映射。

对于映射,需要在项目 common.neon 中设置实体命名空间的前缀和它们所在的目录。也可以使用相对路径。

例如

orm.annotations:
   paths:
      App\Baraja\Entity: %rootDir%/app/model/Entity

您还可以指定 ignore 键,它将禁用特定目录的浏览。

重要警告

当在CLI模式下运行模式生成时,%rootDir%%appDir%%wwwDir%%vendorDir%%tempDir%参数可能会损坏。要解决这个错误,请安装包管理器并使用composer dump命令执行。

从实体生成数据库结构

此包实现了自动执行Doctrine命令的桥梁。

例如,您可以简单地调用

php www/index.php o:s:u -f --dump-sql

命令o:s:u表示orm:schema-tool:update

  • -fflush,以执行SQL中的更改,
  • --dump-sql会显示将要执行的SQL命令列表。

如果一切正常,该命令将创建由本包定义的表core__database_slow_query,并准备好记录慢查询。

提示:如果您使用包管理器,可以直接调用composer dump命令。

🚀 性能基准

当Doctrine使用不当,它可能会变得不必要的慢。

有关更多详细信息(捷克语):https://ondrej.mirtes.cz/doctrine-2-neni-pomala

此包使用最佳实践来提高性能。它自动将autoGenerateProxyClasses设置为false,ProxyClasses将在需要时由Doctrine生成。

为了获得最佳性能,最好使用Redis保存生成的实体元数据:https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html

UUID

提示:了解更多关于UUID二进制性能(捷克语)

为了实现唯一记录(实体)标识,该包定义了UuidIdentifierUuidBinaryIdentifier特质,并为您的实体预先定义了所有基本最佳实践配置。ID将自动生成。

为了获得更好的体验,请将两个特质插入到项目中的所有实体中

<?php

declare(strict_types=1);

namespace Baraja\Doctrine\Entity;


use Doctrine\ORM\Mapping as ORM;
use Baraja\Doctrine\Identifier\IdentifierUnsigned;

#[ORM\Entity]
class DatabaseEntity
{
   use IdentifierUnsigned; // ID trait for entity identifier.
   // or use uuid:
   // use UuidIdentifier; // UUID identifier trait

UUID将在PHP中自动生成。

📄 许可证

baraja-core/doctrine遵循MIT许可证。有关详细信息,请参阅LICENSE文件。