riddlestone/laravel-package-seeders 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

riddlestone/laravel-package-seeders

Composer 安装命令:

composer require riddlestone/laravel-package-seeders

包简介

Provides tools for working with seeders in Laravel packages

README 文档

README

This package provides tools to help with seeders in Laravel projects and packages.

Installation

Use composer to install this package:

composer require riddlestone/laravel-package-seeders

Usage

Auto Seeders

This package provides a way to have a single seeder run seeders from multiple different packages within your project.

Simply tag your seeders as AutoSeeders in a service provider, and then the AutoSeeders seeder will include them when it is run.

use Illuminate\Support\ServiceProvider;
use Riddlestone\LaravelPackageSeeders\Contracts\AutoSeeder;

class MyServiceProvider extends ServiceProvider
{
    public function register(): void
    {
        $this->app->singleton(MySeeder::class);
        $this->app->tag(MySeeder::class, AutoSeeder::class)
    }
}
use Illuminate\Database\Seeder;
use Riddlestone\LaravelPackageSeeders\Seeders\AutoSeeders;

class DatabaseSeeder extends Seeder
{
    public function run(): void
    {
        $this->call(AutoSeeders::class);
    }
}

Versioned Data Seeders

Versioned data seeders let you insert, update, or delete (with SoftDeletes) data from a data set in your model. They are done using your model, so any mutators or casting in your model will be applied.

To extend and use this seeder you will need to provide the following:

  • The model the data is for (getModelClass())
  • The attributes to identify a row by (getLookupAttributes())
  • The attribute to identify a version by (getVersionAttribute()), this defaults to "version" if not supplied
  • The data to update the database to (getData())

For example,

use Riddlestone\LaravelPackageSeeders\Seeders\VersionedDataSeeder;

class ToySeeder extends VersionedDataSeeder
{
    protected function getModelClass(): string
    {
        return Toy::class;
    }

    protected function getLookupAttributes(): array
    {
        return ['key'];
    }
    
    protected function getData() : array{
        return [
            [
                'key' => 'spinning-top',
                'version' => 1,
                'name' => 'Spinning Top',
                'color' => 'red',
            ],
            [
                'key' => 'pogo-stick',
                'version' => 1,
                'name' => 'Pogo Stick',
                'color' => 'blue',
            ],
            [
                'key' => 'racing-car',
                'version' => 1,
                'name' => 'Racing Car',
                'color' => 'red',
                'deleted_at' => '2025-09-01 00:00:00',
            ],
        ];
    }
}

Json Seeders

JsonSeeder is an extension of VersionedDataSeeder, which replaces getData() with getFilename(). This allows you to separate the data from the seeder by providing the path to a JSON file containing your data.

use Riddlestone\LaravelPackageSeeders\Seeders\JsonSeeder;

class ToySeeder extends JsonSeeder
{
    protected function getModelClass(): string
    {
        return Toy::class;
    }

    protected function getLookupAttributes(): array
    {
        return ['key'];
    }
    
    protected function getFilename() : array{
        return __DIR__ . '/toys.json';
    }
}
[
    {
        "key": "spinning-top",
        "version": 1,
        "name": "Spinning Top",
        "color": "red"
    },
    {
        "key": "pogo-stick",
        "version": 1,
        "name": "Pogo Stick",
        "color": "blue"
    },
    {
        "key": "racing-car",
        "version": 1,
        "name": "Racing Car",
        "color": "red",
        "deleted_at": "2025-09-01 00:00:00"
    }
]

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-09-22

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固