这个食谱条目描述了如何从头开始将广泛使用的Doctrine ORM集成到 Slim 4 应用程序中。
将 Doctrine 添加到您的应用程序
第一步是使用composer将 Doctrine ORM 导入到你的项目中。
composer require doctrine/orm symfony/cache
doctrine/cache
请注意,2021 年 4 月 30 日,Doctrine在发布 v2.0.0 版本时正式弃用,该版本从该库中删除了所有缓存实现。从那时起,他们建议改用symfony/cache
符合 PSR-6 的实现。如果你想在生产中缓存 Doctrine 元数据,你只需要它,但这样做没有任何缺点,所以我们将展示如何设置它。
如果您还没有迁移到 PHP8 或者只是想继续使用传统的 PHPDoc 注释来注释您的实体,您还需要导入包,doctrine/annotations
它曾经是 PHP8 的依赖项,doctrine/orm
但由于 2.10.0 是可选的:
composer require doctrine/annotations
定义您的第一个实体
您可以跳过此步骤并改用您的实际 Doctrine 实体。以下只是一个例子。
请注意,它使用 PHP8 属性,如果需要,请将它们转换为 PHPDoc 注释。
提供数据库凭据
接下来,在您的 Slim 配置旁边添加 Doctrine 设置。
定义 EntityManager 服务
现在我们定义EntityManager
服务,它是您代码中与 ORM 交互的主要点。
Slim 4 要求您提供自己的 PSR-11 容器实现。本示例使用uma/dic
, 一个简洁明了的 PSR-11 容器。使其适应您自己选择的容器。
传统上注解元数据读取器是最流行的,但从doctrine/orm
2.10.0 开始他们将依赖设为doctrine/annotations
可选,暗示该项目更愿意用户迁移到现代 PHP8 属性表示法。
这里我们展示了如何使用 PHP8 属性配置元数据读取器。如果您还没有迁移到 PHP8 或想使用传统的 PHPDoc 注释,您将需要使用doctrine/annotations
Composer 显式要求并调用,Setup::createAnnotationMetadataConfiguration(...)
而不是像Setup::createAttributeMetadataConfiguration(...)
下面的示例那样。
创建 Doctrine 控制台
要运行数据库迁移、验证类注释等,您将使用doctrine
已经存在于vendor/bin
. 但是为了工作这个脚本需要一个cli-config.php
位于项目根目录的文件告诉它如何找到EntityManager
我们刚刚设置的。
我们cli-config.php
只需要检索我们刚刚在容器中定义的 EntityManager 服务并将其传递给ConsoleRunner::createHelperSet()
.
花点时间验证控制台应用程序是否正常工作。正确配置后,它的输出或多或少看起来像这样:
此时,您可以通过运行来初始化数据库并加载架构php vendor/bin/doctrine orm:schema-tool:create
。
在我们自己的代码中使用 EntityManager
恭喜!您现在可以从命令行管理数据库,并EntityManager
在代码中需要的地方使用它。
其他资源