lamansky/doctrine

一个集合,包含适用于几乎任何使用 Doctrine ORM 的项目的类。

1.0.1 2022-03-21 20:27 UTC

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 项目都有用的类: ProjectEntityManagerUTCDateTimeType

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');