mitch/laravel-doctrine

此包已被放弃,不再维护。作者建议使用 mitchellvanw/laravel-doctrine 包。

与 Laravel 4 兼容的 Doctrine 2 实现

0.5.0 2014-09-22 10:29 UTC

README

Latest Stable Version License Total Downloads

Doctrine 2 实现,与 Laravel 4 兼容。

文档

在此处开始阅读完整的文档或直接跳转到特定章节。

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

注意事项

目前 Doctrine\migrations 版本 1.0 仍处于 alpha 版。因此,Composer 安装可能需要您将您的 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 实体与数据库交互。您必须使用 实体管理器repositories。这减少了开销,因为您的实体没有扩展整个 Eloquent model 类。如果您处理的是数千或数百万条记录,这可能会显著减慢您的应用程序。

许可证

本软件包遵循MIT许可协议