co-developers/ci-doctrine

CodeIgniter 3 的 Doctrine ORM 库

安装: 41

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 1

公开问题: 0

类型:codeigniter-library

v2.0.2 2017-11-19 20:41 UTC

This package is auto-updated.

Last update: 2024-09-07 06:19:19 UTC


README

CodeIgniter 3 的 Doctrine ORM 库。

要求

CI Doctrine 需要 PHP ^5.5.9|>=7.0.8 和 CodeIgniter 3.x 才能运行。

安装

在您的计算机上安装 Composer 并在 CodeIgniter 项目的根目录中运行命令 composer require co-developers/ci-doctrine

库的配置

在 CodeIgniter 中启用 Composer

要在 CodeIgniter 中启用 Composer,打开文件 application/config.php 并在 $config 数组中指定 Composer 的 autoload.php 文件的路径: $config['composer_autoload'] = 'vendor/autoload.php';

复制 database.yml 文件

文件 application/libraries/doctrine/database.yml 包含了 Doctrine 用于连接数据库的配置。在开始使用 CI Doctrine 之前,您需要将此文件复制到 application/config 文件夹中。在 yml 文件中,active_group 键指示 Doctrine 使用哪个参数组来访问数据库(developmenttestingproduction)。

库的自动加载

要在 CodeIgniter 中自动加载库,打开文件 application/config/autoload.php 并将字符串 'doctrine' 添加到 $autoload['libraries'] 数组中。请记住禁用 CodeIgniter 的 Database 库。

创建文件夹结构

在开始创建实体之前,必须创建以下文件夹:
  • application/ORM/Entity:在此文件夹中创建实体。
  • application/ORM/Repository:在此文件夹中为每个实体生成存储库。
  • application/ORM/Proxy:在此文件夹中为每个实体生成 Proxy 类。
创建这些文件夹后,可以开始创建实体和存储库。Proxy 类会通过延迟加载(Lazy Loading)自动生成。
请注意,在生成每个实体之前,必须在类的声明文件中指定 namespace。同样,存储库也适用。实体的 namespaceEntity,存储库的 namespaceRepository

复制并配置 cli-config.php(Doctrine 控制台)

要使用 Doctrine 控制台,请将文件 application/libraries/doctrine/cli-config.php 复制到 CodeIgniter 项目的根目录中,即在控制器前端 index.php 和 Composer 的 vendor 目录相同的目录中。然后,在同一文件中检查变量 $application_path 是否正确(CodeIgniter 中 application 目录的相对路径)。完成此步骤后,您就可以通过命令行执行 Doctrine 控制台来创建实体、仓库、代理类,从元数据创建数据库表等。要查看可用的命令列表,请在 shell 中执行 $ php vendor/bin/doctrine(Linux)或 vendor\bin\doctrine(Windows),从项目根目录开始。

复制文件 MY_Controller.php(可选)

如果您愿意,可以使用在文件 application/libraries/doctrine/MY_Controller.php 中声明的 MY_Controller 类作为 CodeIgniter 的基控制器。如果我们扩展了所有控制器以从 MY_Controller 继承,我们就可以在每一个控制器中通过 $this->em 属性访问 EntityManager 实例。要开始使用这个核心控制器扩展,我们首先需要启用库的自动加载,然后将文件 application/libraries/doctrine/MY_Controller.php 复制到 application/core 目录。

复制文件 Doctrine_cli.php(可选)

如果您愿意,可以使用在文件 application/libraries/doctrine/Doctrine_cli.php 中声明的 Doctrine_cli 控制器,以便从 CLI 简单地执行 Doctrine 控制台的命令。将文件 application/libraries/doctrine/Doctrine_cli.php 复制到 application/controllers 目录。
要使用 Doctrine_cli,请在 shell 中执行 php index.php doctrine_cli/comando(从项目根目录开始),其中 comando 是对应于 Doctrine 控制台特定命令的控制器动作。请参阅 Doctrine CLI 命令 部分以查看可用的动作列表。

Doctrine CLI 命令

控制器 Doctrine_cli.php 提供以下动作:
  • doctrine_cli/generate_entities:从元数据生成实体。请注意,在执行此命令之前,您必须在 application/ORM/Entity 目录中仅使用属性和元数据生成实体(注解格式)。此命令将自动生成 getterssetters 方法。
  • doctrine_cli/generate_proxies:从 application/ORM/Proxy 目录中的实体生成代理类。
  • dontrine_cli/generate_repositories:从实体的元数据生成仓库。它们将在 application/ORM/Repository 目录中生成。
  • doctrine_cli/create_schema:从实体的元数据生成整个数据库结构。
  • doctrine_cli/update_schema:从实体的元数据更新数据库结构。建议使用 --force 参数。
  • doctrine_cli/convert_mapping_from_db:进行数据库反向工程。具体来说,它从数据库结构生成注解格式的元数据。元数据在实体类中指定。

实体元数据

CI Doctrine 使用注解来指定实体元数据,因为这是当前由 Symfony 推荐的做法。因此,请通过注解将元数据输入到实体文件中。