j-ben87/data-bundle

允许通过命令行加载固定数据集。

安装次数: 4,458

依赖: 0

建议: 0

安全性: 0

星级: 0

关注者: 3

分支: 1

开放问题: 0

类型:symfony-bundle

1.2.1 2018-01-24 17:24 UTC

This package is auto-updated.

Last update: 2024-09-06 07:29:13 UTC


README

安装

使用composer安装

composer require j-ben87/data-bundle

在您的 app/AppKernel.php 中注册包

public function registerBundles()
{
    $bundles = [
        // ...
        new JBen87\DataBundle\DataBundle(),
    ];

    // ...
}

配置

该包公开以下配置

# app/config/config.yml
data:
    culture: fr_FR                                      # required - used to generate localized data with Faker
    fixtures_dir: "%kernel.root_dir%/data/fixtures"     # default value - directory where datasets fixtures files are located
    datasets:
        fake:
            files:
                - "user.yml"
                - "address.yml"
            processors:                                 # optional - white list some processors (default to all if empty)
                - "@app.data_fixtures.processor.user"
            providers:                                  # optional - white list some providers (default to all if empty)
        other:
            files:
                - "..."

基本用法

命令

该包提供了一个与 DoctrineFixturesBundle 类似的命令,用于使用 AliceFaker 加载您的固定数据集。

Usage:
  bin/console data:fixtures:load <dataset> [options]

Arguments:
  dataset                    The dataset to load.

Options:
      --append               Append the data fixtures instead of deleting all data from the database first.
      --purge-with-truncate  Purge data by using a database-level TRUNCATE statement

数据集

要加载您的固定数据集,您首先需要创建一个 数据集

数据集由以下两部分组成

  • 一个包含 yml 固定数据文件的目录,这些文件将由 Alice 加载
  • 一个引用要加载的文件的 Dataset 服务(顺序很重要)

注意:如果您使用配置来定义数据集,则 Dataset 服务将自动为您处理。

定义

您需要做的只是按照您希望它们处理的顺序,在配置中列出要加载的固定数据文件。

# app/config/config.yml
data:
    datasets:
        fake:
            files:
                - "user.yml"
                - "..."

固定数据文件

默认情况下,包含数据集固定数据的文件位于 app/data/fixtures,但 这可以配置

# app/data/fixtures/fake/user.yml
AppBundle\Entity\User:
    user_{1..10}:
        firstname: <firstName()>
        lastname: <lastName()>
        email: <email()>
        password: <password()>

就是这样,您可以开始使用了!

高级用法

提供者 & 处理器

Alice 包含 提供者处理器

您可以使用与注册 Dataset 相同的命令来注册您的提供者

  • 提供者必须标记为 data.provider
  • 处理器必须标记为 data.processor
services:
    app.data_fixtures.provider.custom:
        class: AppBundle\DataFixtures\Provider\CustomProvider
        public: false
        tags:
            - { name: data.provider }

    app.data_fixtures.processor.user:
        class: AppBundle\DataFixtures\Processor\User
        public: false
        tags:
            - { name: data.processor }

它们将自动可用并用于编写和处理固定数据。

注意:您可以在 配置 中为数据集白名单一些提供者或处理器。

数据集

如果您不能或不想使用配置来定义数据集,您也可以手动创建它们。

在您的项目中某个位置创建一个 Dataset 类。它必须实现 JBen87\DataBundle\Dataset\DatasetInterface。或者它也可以扩展基本类 JBen87\DataBundle\Dataset\Dataset

// src/AppBundle/DataFixtures/Dataset/FakeDataset.php

use JBen87\DataBundle\Dataset\Dataset;

class FakeDataset extends Dataset
{
    /**
     * @inheritDoc
     */
    public function getFiles()
    {
        return [
            'user.yml',
        ];
    }
}

要使用命令注册,它还必须声明为一个带有标记 data.dataset 的服务。可选标记属性 alias 可以用来设置数据集名称。

重要:如果没有提供,则数据集名称将从服务id猜测(例如,服务 app.data_fixtures.dataset.fake 的名称将是 fake)。

services:
    app.data_fixtures.dataset.fake:
        class: AppBundle\DataFixtures\Dataset\FakeDataset
        public: false
        tags:
            - { name: data.dataset }

贡献

欢迎拉取请求。

感谢 所有已经贡献的人

在MIT许可证下发布