Seeders
#
DefinitionSeeders (are a short name for Database Seeders).
Seeders are classes made to seed the database with real data, this data usually should exist in the Application after the installation (Example: the default Users Roles and Permissions or the list of Countries).
#
Principles- Seeders SHOULD be created in the Containers. (If the container is using a package that publishes a Seeder class, this class should be manually placed in the Container that make use of it. Do not reply on the package to place it on its right location).
#
RulesSeeders should be in the right directory inside the container to be loaded.
To avoid any conflict between containers seeders classes, you SHOULD always prepend the Seeders of each container with the container name. (Example:
UserPermissionsSeeder
,ItemPermissionsSeeder
). If 2 seeders classes have the same name but live in different containers, one of them will not be loaded.If you wish to order the seeding of the classes, you can just append
_1
,_2
to your classes.
#
Folder Structure - App - Containers - {container-name} - Data - Seeders - ContainerNameRolesSeeder_1.php - ContainerNamePermissionsSeeder_2.php - ...
#
Code SamplesRoles Seeder
:
<?php
namespace App\Containers\Order\Data\Seeders;
use App\Ship\Parents\Seeders\Seeder;use Apiato\Core\Foundation\Facades\Apiato;
class OrderPermissionsSeeder_1 extends Seeder{
public function run() { Apiato::call('Authorization@CreatePermissionTask', ['approve-reject-orders']); Apiato::call('Authorization@CreatePermissionTask', ['find-orders']); Apiato::call('Authorization@CreatePermissionTask', ['list-orders']); Apiato::call('Authorization@CreatePermissionTask', ['update-orders']); Apiato::call('Authorization@CreatePermissionTask', ['delete-orders']);
// ...
}}
Note: Same Seeder
class is allowed to contain seeding for multiple Models
.
#
Run the SeedersAfter registering the Seeders
you can run this command:
php artisan db:seed
To run specific Seeder class you can specify its class in the parameter as follows:
php artisan db:seed --class="your\single\seeder\goes-here"
Migrate & seed at the same time
php artisan migrate --seed
For more information about the Database Seeders read this.
#
Apiato testing seeder commandIt's useful sometimes to create a big set of testing data. apiato facilitates this task:
- Open
app/Ship/Seeders/SeedTestingData.php
and write your testing data here. - Run this command any time you want this data available (example at staging servers):
php artisan apiato:seed-test