carlosv2/dumbsmart-repositories-bundle

Symfony与DumbsmartRepositories之间的桥梁

1.2.0 2018-06-01 11:31 UTC

This package is not auto-updated.

Last update: 2024-09-14 23:49:38 UTC


README

本项目是Dumbsmart Repositories与symfony项目之间的桥梁。

License Build Status SensioLabsInsight

安装

步骤 1: 下载包

打开命令行控制台,进入您的项目目录并执行以下命令以下载此包的最新稳定版本

$ composer require --dev carlosv2/dumbsmart-repositories-bundle

此命令要求您全局安装Composer,如Composer文档中的安装章节所述。

步骤 2: 启用包

如果您正在使用Allegro,则不需要进行其他操作即可安装它。

如果您不使用Allegro,请通过将其添加到项目app/AppKernel.php文件中注册的包列表来启用包(由于它主要用于开发,您可能希望将此文件中的配置放在开发配置下)

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = array(
            // ...

            new carlosV2\DumbsmartRepositoriesBundle\DumbsmartRepositoriesBundle(),
        );

        // ...
    }

    // ...
}

步骤 3: 配置

以下是为此包提供的可用配置

dumbsmart_repositories:
    repositories:
        type: <string>
        path: <string>
    autoconfigure:
        orm: <boolean>
        odm: <boolean>
    entities: <array>
    aliases: <array>

任何值都是可选的,如下

  • dumbsmart_repositories.repositories.type: 仓库类型。可用值为filein_memory。默认值:in_memory
  • dumbsmart_repositories.repositories.path: 如果仓库类型是file,则这是创建它们的文件夹。默认值:系统临时文件夹。
  • dumbsmart_repositories.autoconfigure.orm: 从doctrine实体配置中进行配置。默认值:false
  • dumbsmart_repositories.autoconfigure.odm: 从doctrine文档配置中进行配置。默认值:false
  • dumbsmart_repositories.entities: 手动实体配置。默认值:空数组。
  • dumbsmart_repositories.aliases: 仓库重用的一组类别名。默认值:空数组。

实体

您可以使用实体来完成

  • 无法自动配置的实体
  • 在不支持Doctrine的系统上注入仓库

您不需要实体来完成

  • 您不需要将其存储在仓库中的对象

每个实体都必须有以下字段

dumbsmart_repositories:
    entities:
        class_1:
            id: id_property
            relations:
                property_1: many
                property_2: one
                ...
        class_2:
            extends: class_1
            relations:
                property_3: one
                property_4: many
                ...
        ...

其中

  • id: 指向给定类中的ID属性。
  • extends: 指向此类所继承的类。
  • relations: 包含具有关系的属性列表。您只需设置映射到其他对象的属性,而这些对象也需要仓库。任何作为任何关系部分映射的对象都必须在entities中也有一个条目。默认值:空数组。

请注意,一个类只能有idextends字段中的一个,但不能同时都有。此外,relations中的每个属性只能有onemany作为指定的值。

别名

您可以使用别名来完成

  • 存储类似类
  • 根据任何标准给类命名

您不需要别名来完成

  • 继承的类(如果Doctrine被设置为处理它们,继承的类将存储在同一个仓库中)。

根据您需要的配置级别,您可以使用以下快捷方式来设置它们

dumbsmart_repositories:
    aliases:
        alias_class_1: original_class_1
        alias_class_2: original_class_2
        ...

或者使用扩展版本并也为某些字段设置别名(只有需要定义的更改字段应该被定义)

dumbsmart_repositories:
    aliases:
        alias_class_1:
            class: original_class_1
            mapping:
                original_class_1_field_A: alias_class_1_field_B
                ...
        alias_class_2:
            class: original_class_2
            mapping:
                original_class_2_field_A: alias_class_2_field_B
                ...
        ...

用法

完成配置后,您可以通过将服务注入依赖注入中来请求一个仓库,如下所示

<service id="class.repository"
         class="Everzet\PersistedObjects\Repository">
    <factory service="dumbsmart_repositories.front_repository_factory" method="getRepository" />
    <argument>class</argument>
</service>

您可以创建尽可能多的仓库,但请注意,根据配置的不同,同一个仓库可能会为不同的类返回。