tonnyorg / laraseed
Requires
- laravel/framework: ^7.0
This package is auto-updated.
Last update: 2022-06-12 11:08:51 UTC
README
该包旨在扩展Seeders的功能并简化Laravel应用模型的构建。
当前功能
- Seeders特性:防止种子文件运行两次。
- 版本变量:用于清除前端图像和其他资源的缓存。
- 管理员模型:分离应用程序用户和员工的功能。
- 软删除:为用户的表添加软删除列。
- 基础模型:用于认证模型和常规模型(带或不带软删除)。
安装包
通过运行 composer require tonnyorg/laraseed
将 tonnyorg/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
之后立即运行迁移来创建administrators
和administrator_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种基础模型:Model
、SoftModel
和Authenticatable
,由你决定使用哪个(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 { // }
最终笔记
待办事项
- 为问题创建存储库模板。
许可证
许可证详细信息在这里。