amestsantim/laravel-seeder-with-data-generator

此包已被废弃且不再维护。未建议替代包。

使用数据生成 Laravel 种子文件

1.1 2019-05-29 06:57 UTC

This package is auto-updated.

Last update: 2023-05-12 07:02:45 UTC


README

这是一个 Laravel 包,它为 artisan 命令添加了一个生成器命令(make),可以为您生成数据库种子类。它与内置的种子类生成器类似,但这个生成器允许您向其中传递数据以包含在种子类中。

这在您可能希望将数据库条目包含在部署中(例如角色和权限等)的情况下非常有用。

make:seeder-with-data

安装

composer require amestsantim/laravel-seeder-with-data-generator

使用方法

make:seeder-with-data [options] [--] <tableName> [<data>]

Arguments:
     tableName             The name of the DB table
     data                  The data, as a serialized array of named index arrays [default: "[]"]
Options:
      --path[=PATH]         Path where the seeder file should be saved
      --timestamps          If present, this switch will enable the automatic insertion of timestamps

示例

php artisan make:seeder-with-data permissions "[['guard_name' => 'web', 'name' => 'Make Seeders'], ['guard_name' => 'web', 'name' => 'Run Seeders']]"

请注意我们使用的格式,数据参数将原样传递。请记住将其放在双引号中。

...这将给您

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class GenericModel extends Model
{
    public $timestamps = false;
}

class PermissionsTableSeeder extends Seeder
{
    public function run()
    {
        $rowArray = [['guard_name' => 'web', 'name' => 'Make Seeders'], ['guard_name' => 'web', 'name' => 'Run Seeders']];
        $model = new GenericModel();
        $model->setTable('permissions');
        foreach ($rowArray as $row) {
            $model->create($row);
        }
    }
}

您还可以使用 --path 选项指定生成的种子文件的保存位置,如下所示

php artisan make:seeder-with-data permissions "[['guard_name' => 'web', 'name' => 'Make Seeders'], ['guard_name' => 'web', 'name' => 'Run Seeders']]" --path="/storage/app/seeders"

如果路径中不存在目录,它将创建这些目录。

如果您省略数据参数,则默认使用空数组,这样种子文件仍然可以运行而不会出错,但实际上不会执行任何操作。

指定 --timeStamps 开关将更改模型上的 $timestamps 属性的值为 true。这将启用在插入数据时自动添加 created_at 和 updated_at 字段。命令如下所示

php artisan make:seeder-with-data permissions "[['guard_name' => 'web', 'name' => 'Make Seeders'], ['guard_name' => 'web', 'name' => 'Run Seeders']]" --timestamps