mitchellvanw/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.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许可证