lamansky / doctrine
一个集合,包含适用于几乎任何使用 Doctrine ORM 的项目的类。
1.0.1
2022-03-21 20:27 UTC
Requires
- php: >=7.4.0
- doctrine/annotations: ^1.13
- doctrine/orm: ^2.11.2
- nesbot/carbon: ^2.57.0
- symfony/cache: ^5.4
Requires (Dev)
- lamansky/phpcs: ^1
This package is not auto-updated.
Last update: 2024-09-17 08:00:49 UTC
README
Doctrine ORM(对象关系映射器)的实用类集合 Doctrine。
安装
在您的计算机上安装并初始化了 Composer 项目的根目录中,运行此命令
composer require lamansky/doctrine
需要 PHP 7.4 或更高版本。
您不需要单独安装 Doctrine2。它将与此软件包捆绑。
类
该库包含两个对几乎所有 Doctrine 项目都有用的类: ProjectEntityManager
和 UTCDateTimeType
。
ProjectEntityManager
一个抽象的 EntityManagerDecorator,会自动命名空间您的实体类名。使用方法:首先创建一个继承自 ProjectEntityManager
的项目类,并定义类命名空间前缀
<?php namespace MyProject\Doctrine; use Lamansky\Doctrine\ProjectEntityManager; class EntityManager extends ProjectEntityManager { protected function getEntityNamespacePrefix () : string { return 'MyProject\Model\Entity\\'; } protected function getProxyNamespacePrefix () : string { return 'MyProject\Model\Proxy\\'; } }
然后,按如下方式初始化实体管理器
<?php use MyProject\Doctrine\EntityManager; global $em; $em = new EntityManager( DB_HOST, DB_USER, DB_PASS, DB_NAME, IS_DEV_ENV, // This should be true or false. __DIR__ . '/Model/Entity', // This is the path to your Entity class files directory. __DIR__ . '/Model/Proxy' // This is the directory path in which generated Proxy class files should be stored. );
UTCDateTimeType
确保所有日期时间在存储到数据库时都转换为 UTC 时区,在检索时转换为服务器本地时区。返回 Carbon 对象而不是内置的 DateTime
对象。
只需使用此代码覆盖内置的日期时间类型
<?php use Doctrine\DBAL\Types\Type; Type::overrideType('datetime', 'Lamansky\Doctrine\UTCDateTimeType'); Type::overrideType('datetimetz', 'Lamansky\Doctrine\UTCDateTimeType');