jshen919/laravel-doctrine

该包已被 废弃,不再维护。未建议替代包。

与 Laravel 混合的 Doctrine 2 实现

dev-master 2015-01-31 09:43 UTC

This package is auto-updated.

Last update: 2017-04-29 17:59:51 UTC


README

Latest Stable Version License Total Downloads

与 Laravel 5 混合的 Doctrine 2 实现。

文档

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

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

注意事项

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