elaborate-code/laravel-algerian-education-system

Tables migrations seeded with the structure of the algerian education system for Laravel apps


README

Packagist Version Packagist Downloads (custom server) GitHub Workflow Status GitHub Workflow Status

banner

If you are building a Learning Management System or a School Management System and targeting the Algerian market, this package is perfect to kick start your project by providing migrations and seeders according to the Algerian education system structure. see tables.md

Installation

Install the package via composer:

composer require elaborate-code/laravel-algerian-education-system

Publish and run the migrations:

php artisan vendor:publish --tag="algerian-education-system-migrations"
php artisan migrate

You may need to rename the migration to something like 2014_10_12_200000_create_cycles_table.php, 2014_10_12_200000_create_class_types_table.php to make them run automatically with the first migrations.

Publishing config file [Optional]

You can publish the config file with:

php artisan vendor:publish --tag="algerian-education-system-config"

This is the contents of the published config file:

return [
    'cycles_table_name' => null, // defaults to cycles
    'class_types_table_name' => null, // defaults to class_types
];

That allows you to rename the tables names before running the migrations.

Usage

Seeders

After publishing and running the migrations, add the seeders to the called seeders list:

  • AlgerianEducationSystemSeeder is the main seeder that calls:
    • CycleSeeder
    • ClassTypeSeeder
  • MergePrescolaireIntoPrimaireCycleSeeder as the name states it deletes the pre-scolaire cycle row, and edits the pre-scolaire class type to belong to primaire cycle
// Database\Seeders\DatabaseSeeder
public function run()
{
    $this->call([
        ElaborateCode\AlgerianEducationSystem\Database\Seeders\AlgerianEducationSystemSeeder::class,
        // ElaborateCode\AlgerianEducationSystem\Database\Seeders\MergePrescolaireIntoPrimaireCycleSeeder::class,
    ]);
}

Or call it directly from the command line:

php .\artisan db:seed --class=ElaborateCode\AlgerianEducationSystem\Database\Seeders\AlgerianEducationSystemSeeder

Models

The models ElaborateCode\AlgerianEducationSystem\Models\Cycle and ElaborateCode\AlgerianEducationSystem\Models\ClassType give you access to a set of relationships. so either use them or extend them.

  • Cycle::classTypes(): HasMany
  • ClassType::cycle(): BelongsTo
  • ClassType::previousClassType(): BelongsTo
  • ClassType::nextClassTypes(): HasMany
  • ClassType::previousLevelClassTypes(): HasMany
  • ClassType::nextLevelClassTypes(): HasMany

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.