mitchellvanw / laravel-doctrine
与 Laravel 4 混合的 Doctrine 2 实现
Requires
- php: >=5.5.0
- doctrine/migrations: 1.*
- doctrine/orm: 2.5.*
- illuminate/support: 4.*|5.*
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: 3.7.*
README
一个与 Laravel 4 混合的 Doctrine 2 实现。
文档
在此处开始阅读完整文档,或立即跳转到特定章节。
注意事项
目前 Doctrine\migrations 版本 1.0 仍处于 alpha 阶段。因此,可能需要将您的 composer.json
中的 minimum-stability
修改为 dev
。
如果您不想影响其他包的稳定性,您可以在您的 composer.json
中添加以下属性
"prefer-stable": true
安装
首先通过 Composer 安装该包。编辑您的项目 composer.json
文件,以添加对 mitchellvanw/laravel-doctrine
的需求。
此包仍处于早期阶段,但功能完整。API 可能会有细微变化,但不会有重大变化。
"require": { "mitchellvanw/laravel-doctrine": "0.5.*" }
接下来,使用终端中的 Composer 更新您的项目
php composer.phar update
安装包后,您需要添加服务提供者。打开您的 app/config/app.php
配置文件,并在 providers
数组中添加一个新项。
'Mitch\LaravelDoctrine\LaravelDoctrineServiceProvider'
之后,您需要添加外观。打开您的 app/config/app.php
配置文件,并在 aliases
数组中添加一个新项。
'EntityManager' => 'Mitch\LaravelDoctrine\EntityManagerFacade'
建议发布包配置。
php artisan config:publish mitchellvanw/laravel-doctrine --path=vendor/mitchellvanw/laravel-doctrine/config
2 分钟
此包使用 Laravel 数据库配置,因此可以直接使用。使用实体管理器外观(或服务定位器)可以与存储库交互。建议您查阅Doctrine 2 文档以了解其工作原理。以下简短示例展示了如何以最简单的方式使用实体管理器。
<?php $user = new User; $user->setName('Mitchell'); EntityManager::persist($user); EntityManager::flush();
上面示例中使用的 User
看起来是这样的。
<?php use Doctrine\ORM\Mapping AS ORM; /** * @ORM\Entity * @ORM\Table(name="users") */ class User { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string") */ private $name; public function getId() { return $this->id; } public function getName() { return $this->name; } public function setName($name) { $this->name = $name; } }
如果您只使用过 Eloquent 及其模型,这可能会看起来很臃肿或令人恐惧,但实际上它非常简单。让我来分解一下这个类。
<?php use Doctrine\ORM\Mapping AS ORM; /** * @ORM\Entity * @ORM\Table(name="users") */ class User { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ private $id; /** * @ORM\Column(type="string") */ private $name; }
这个 entity
中真正重要的是属性。这显示了 entity
包含哪些数据。
使用Doctrine 2时,您不能通过使用实体 User
来与数据库交互。您必须使用 实体管理器 和 仓库
。这可以减少开销,因为您的实体不是扩展整个Eloquent 模型
类。如果您正在处理成千上万或数百万条记录,这可能会大大减慢您的应用程序。
许可证
此软件包遵循 MIT许可证。