rsamborski / 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 install可能需要您在您的composer.json
中将minimum-stability
更改为dev
。
如果您不想影响其他包的稳定性,您可以在您的composer.json
中添加以下属性
"prefer-stable": true
安装
首先,通过Composer安装此包。编辑您项目的composer.json
文件,将rsamborski/laravel-doctrine
添加为依赖项。
此包仍处于早期阶段,但功能齐全。API可能会略有变化,但不会有重大变化。
"require": { "rsamborski/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文档以了解其工作原理。以下简单的示例展示了如何以最简单的方式使用EntityManager。
<?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
实体与数据库交互。您必须使用实体管理器和repositories
。这会减少开销,因为您的实体没有扩展整个Eloquentmodel
类。如果您处理的是成千上万或数百万条记录,这可能会大大减慢您的应用程序。
许可证
此包根据MIT许可证授权。