co-developers / ci-doctrine
CodeIgniter 3 的 Doctrine ORM 库
v2.0.2
2017-11-19 20:41 UTC
Requires
- php: ^5.5.9|>=7.0.8
- composer/installers: ^1.0
- doctrine/orm: ~2.5
- symfony/yaml: ~3.3.9
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 使用哪个参数组来访问数据库(development
、testing
或 production
)。库的自动加载
要在 CodeIgniter 中自动加载库,打开文件application/config/autoload.php
并将字符串 'doctrine'
添加到 $autoload['libraries']
数组中。请记住禁用 CodeIgniter 的 Database 库。创建文件夹结构
在开始创建实体之前,必须创建以下文件夹:application/ORM/Entity
:在此文件夹中创建实体。application/ORM/Repository
:在此文件夹中为每个实体生成存储库。application/ORM/Proxy
:在此文件夹中为每个实体生成 Proxy 类。
请注意,在生成每个实体之前,必须在类的声明文件中指定
namespace
。同样,存储库也适用。实体的 namespace
是 Entity
,存储库的 namespace
是 Repository
。复制并配置 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
目录中仅使用属性和元数据生成实体(注解格式)。此命令将自动生成getters
和setters
方法。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
:进行数据库反向工程。具体来说,它从数据库结构生成注解格式的元数据。元数据在实体类中指定。