Laravel algerian education system structure
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 thepre-scolaire
cycle row, and edits thepre-scolaire
class type to belong toprimaire
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.