tonnyorg/laraseed

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

v2.0.1 2020-05-12 06:00 UTC

This package is auto-updated.

Last update: 2022-06-12 11:08:51 UTC


README

该包旨在扩展Seeders的功能并简化Laravel应用模型的构建。

当前功能

  • Seeders特性:防止种子文件运行两次。
  • 版本变量:用于清除前端图像和其他资源的缓存。
  • 管理员模型:分离应用程序用户和员工的功能。
  • 软删除:为用户的表添加软删除列。
  • 基础模型:用于认证模型和常规模型(带或不带软删除)。

安装包

通过运行 composer require tonnyorg/laraseedtonnyorg/laraseed 配置为composer依赖项。

在应用程序的 providers 数组中注册包(config/app.php

    'providers' => [
        /*
         * Package Service Providers...
         */
        TonnyORG\LaraSeed\ServiceProvider::class,
    ],

功能 & 如何使用

Seeders特性

适用于需要在生产环境中运行种子文件的场景。您可以存储已运行的种子文件以防止未来再次运行。想象一下,您有一个用于种子文件的“migrations”表,就是这样。

说明:

为了使用此功能,您需要通过 php artisan migrate 运行包的迁移,这将创建此功能使用的 seeders 表。

完成后,下一步是使用来自您的 database/seeds/DatabaseSeeder.php 文件的 SeedersHandler 类。

<?php

use Illuminate\Database\Seeder;
use TonnyORG\LaraSeed\Database\Traits\SeedersHandler;

class DatabaseSeeder extends Seeder
{
    use SeedersHandler;

最后一步是将 call 方法替换为 try。所以,而不是

$this->call(UsersTableSeeder::class);

您将编写如下内容

$this->try(UsersTableSeeder::class);

版本变量

想象一下,您有CloudFlare或任何其他强大的缓存处理程序;那么编译您的资源和更新CSS和JS文件中的版本号就不是什么大问题。然而,为了清除图像的缓存,您需要运行一个手动过程和/或用另一个名称标记它们。

此功能允许您拥有一个基于您存储库中提交数的“版本号”。也就是说,每次您在主题中放置新图像(例如,您的页眉和页脚徽标图像)时,只需追加 ?v={{ config('laraseed.revision_number') }}

说明:

为了使用此功能,第一步是发布配置文件

php artisan vendor:publish --tag=laraseed-config

LARASEED_REVISION_NUMBER=1 添加到您的 .env 文件。

最后,通过以下命令在每次发布项目时更新它

php artisan laraseed:update-revision-number

管理员模型

默认情况下,Laravel假设我们想要在应用程序中的任何位置使用User模型;此Administrator模型允许您分离用户和员工的功能。

我知道你在想什么,是的,我们有ACL包,但是当您的管理应用程序和客户的分开,并且您需要限制管理应用程序对员工的访问时,此模型非常有用。

说明:

使用此功能的第一个步骤是复制迁移文件

php artisan vendor:publish --tag=laraseed-migration-administrators

之后立即运行迁移来创建administratorsadministrator_password_resets表(因为……我们也需要它,对吧?)

php artisan migrate

完成后,别忘了在你的config/auth.php文件中添加配置部分

    'providers' => [
        'users' => [
            // other stuff here
        ],

        'administrators' => [
            'driver' => 'eloquent',
            'model' => App\Administrator::class, // We are going to create this model in the next step
        ],
    ],

    // more stuff here

    'passwords' => [
        'users' => [
            // and more stuff here as well
        ],

        'administrators' => [
            'provider' => 'administrators',
            'table' => 'administrator_password_resets',
            'expire' => 60,
            'throttle' => 60,
        ],
    ],

最后,通过php artisan make:model Administrator创建一个模型,并复制默认属性(来自User模型)。

可选:

为了方便,我还包括了一个迁移,将默认的password_resets表重命名为user_password_resets

我们需要发布这个迁移

php artisan vendor:publish --tag=laraseed-migration-renaming

并运行迁移

php artisan migrate

完成迁移后,只需更新你的config/auth.php文件,使用新的表名

    'passwords' => [
        'users' => [
            //
            'table' => 'user_password_resets',
            //
        ],
    ],

软删除

简单的迁移,为你的users和(如果已安装)administrators表添加deleted_at列。

说明:

发布迁移

php artisan vendor:publish --tag=laraseed-migration-soft-deletes

并运行迁移

php artisan migrate

基础模型

此包中更“丰富”的部分之一是基础模型,这些模型是抽象类,你可以将其用作模型的“引导”类。

我们有3种基础模型:ModelSoftModelAuthenticatable,由你决定使用哪个(SoftModel需要你的表具有deleted_at列)。

为了澄清,查看TonnyORG\LaraSeed\Models\Base命名空间中,有3个类

  • Authenticatable:这是一个基于原始App\User类的抽象类,因此它具有处理应用程序认证的一切,就像全新Laravel安装中的默认模型一样。
  • Model:这是一个包含一些默认属性(如$dates)的抽象类。所有从这个类扩展的模型都必须有timestamps
  • SoftModel:这是基于Model的,唯一的区别是这个模型还要求有deleted_at列,因为这是用于软删除的。

TonnyORG\LaraSeed\Models命名空间内部,我们还有4个其他类

  • Administrator:它扩展自Authenticatable,但还包括$table属性。
  • SoftAdministrator:它扩展自Administrator,但还处理软删除。
  • User:它扩展自Authenticatable,但还包括$table属性,类似于Administrator
  • SoftUser:它扩展自User,但还处理软删除,类似于SoftAdministrator

说明:

要使用这些类,你只需创建你的模型并从它们扩展,而不是从原始的Illuminate\Database\Eloquent\Model类扩展

// app/User.php
<?php

namespace App;

use TonnyORG\LaraSeed\Models\SoftUser;

class User extends SoftUser
{
    //
}

// app/Post.php
<?php

namespace App;

use TonnyORG\LaraSeed\Models\Base\Model;

class Post extends Model
{
    //
}

最终笔记

待办事项

  • 为问题创建存储库模板。

许可证

许可证详细信息在这里