rsamborski/laravel-doctrine

与Laravel 4完美融合的Doctrine 2实现

0.5.0 2014-09-22 10:29 UTC

README

Latest Stable Version License Total Downloads

一个与Laravel 4完美融合的Doctrine 2实现。

文档

在这里开始阅读完整的文档,或者直接跳转到特定章节。

  1. 安装
  2. 工作原理
  3. 基础知识
  4. 实体管理器
  5. 时间戳
  6. 软删除
  7. 身份验证
  8. 模式
  9. Doctrine配置
  10. 元数据配置
  11. 注解读取器
  12. 元数据
  13. MIT许可证

注意事项

目前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许可证授权。