jshen919 / laravel-doctrine
与 Laravel 混合的 Doctrine 2 实现
Requires
- php: >=5.4.0
- doctrine/migrations: 1.*
- doctrine/orm: 2.5.*
- illuminate/support: ~5.0
Requires (Dev)
- mockery/mockery: dev-master
- phpunit/phpunit: 3.7.*
This package is auto-updated.
Last update: 2017-04-29 17:59:51 UTC
README
与 Laravel 5 混合的 Doctrine 2 实现。
文档
在此处开始阅读完整的 文档 或直接跳转到特定章节。
注意事项
目前 Doctrine\ORM 版本 2.5 仍然处于 beta 版。因此,composer 安装可能需要您将您的 composer.json
中的 minimum-stability
改为 dev
。
如果您不想影响其他包的稳定性,您可以在您的 composer.json
中添加以下属性
"prefer-stable": true
安装
首先通过 Composer 安装包。编辑您的项目 composer.json
,将 mitchellvanw/laravel-doctrine
添加为依赖项。
该包目前处于早期阶段,但完全可用。API 可能会略有变化,但不会有重大变化。
"require": {
"mitchellvanw/laravel-doctrine": "1.*"
}
然后使用 Composer 从终端更新您的项目
php composer.phar update
一旦安装了包,您需要添加服务提供者。打开您的 app/config/app.php
配置文件,并将新项目添加到 providers
数组中。
'Mitch\LaravelDoctrine\LaravelDoctrineServiceProvider'
之后,您需要添加外观。打开您的 app/config/app.php
配置文件,并将新项目添加到 aliases
数组中。
'EntityManager' => 'Mitch\LaravelDoctrine\EntityManagerFacade'
最后但同样重要的是,确保您将配置文件从包中复制到您的配置文件夹。
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
*/
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
。这会创建更少的开销,因为您的实体没有扩展整个 Eloquent model
类。如果您正在处理数千或数百万条记录,这可能会极大地减慢您的应用程序。
许可证
本包根据 MIT 许可证 授权。