baraja-core / doctrine
Doctrine 到 Nette 3.0 的性能最佳端口。
Requires
- php: ^8.0
- ext-pdo: *
- baraja-core/nette-symfony-console: ^1.0
- baraja-core/network: ^1.0
- baraja-core/url: ^1.1
- doctrine/annotations: ^1.13
- doctrine/orm: ^2.13
- nette/di: ^3.0
- ramsey/uuid: ^4.4
Requires (Dev)
- baraja-core/package-manager: ^3.2
- baraja-core/service-method-invoker: ^2.2
- nette/caching: ^3.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.0
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-nette: ^1.0
- phpstan/phpstan-strict-rules: ^1.0
- roave/security-advisories: dev-master
- spaze/phpstan-disallowed-calls: ^2.0
- tracy/tracy: ^2.9
- dev-master
- v3.7.5
- v3.7.4
- v3.7.3
- v3.7.2
- v3.7.1
- v3.7.0
- v3.6.0
- v3.5.5
- v3.5.4
- v3.5.3
- v3.5.2
- v3.5.1
- v3.5.0
- v3.4.4
- v3.4.3
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.1
- v3.3.0
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.0
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.x-dev
- v2.6.1
- v2.6.0
- v2.5.2
- v2.5.1
- v2.5.0
- v2.4.6
- v2.4.5
- v2.4.4
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.2
- v2.3.1
- v2.3.0
- v2.2.9
- v2.2.8
- v2.2.7
- v2.2.6
- v2.2.5
- v2.2.4
- v2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.1
- v2.1.0
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.1.0
- v1.0.23
- v1.0.22
- v1.0.21
- v1.0.20
- v1.0.19
- v1.0.18
- v1.0.17
- v1.0.16
- v1.0.15
- v1.0.14
- v1.0.13
- v1.0.12
- v1.0.11
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-dependabot/composer/doctrine/annotations-tw-2.0
- dev-renovate/configure
- dev-env-variable
- dev-em-return-void
- dev-restyled/renovate/configure
- dev-dependabot/add-v2-config-file
This package is auto-updated.
Last update: 2024-09-09 20:49:56 UTC
README
BRJ 组织
Baraja Doctrine 数据库 📚
一个简单易用,性能最优,且与 Doctrine 连接的数据库层,允许您使用 OOP 的所有优势,同时也支持 Nette 3。
此软件包会自动将 Doctrine 安装到您的项目中(同时在配置中也设置了所有内容),并稳定运行。
🐛 最佳调试 Tracy 面板
此软件包包含调试您的应用程序和 SQL 查询的最先进本地工具。您可以非常轻松地查看执行的查询,直接点击它们的原始调用位置,并查看输出中的时间图(带有分析慢查询的可能性)。查询类型以单独的格式显示,以便快速控制数据流。
该软件包还包括通过 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
目前,该软件包仅支持连接到一个数据库。
可能的连接选项:url
、pdo
、memory
、driver
、driverClass
、driverOptions
、unix_socket
、host
、port
、dbname
、servicename
、user
、password
、charset
、portability
、fetchCase
、persistent
、types
、typesMapping
、wrapperClass
。
⚙️ 驱动程序
默认情况下,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
。
-f
是flush
,以执行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二进制性能(捷克语)
为了实现唯一记录(实体)标识,该包定义了UuidIdentifier
或UuidBinaryIdentifier
特质,并为您的实体预先定义了所有基本最佳实践配置。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文件。