Base de données & migrations
CLIENTXCMS permet aux développeurs de gérer facilement les bases de données pour leurs extensions via des migrations. Une fonction spécifique est fournie pour charger ces migrations lors du démarrage de l'extension.
Charger les migrations
Pour charger les migrations dans une extension, il faut inclure la méthode loadMigrations()
dans le fichier ServiceProvider
de l'extension. Voici un exemple de l'utilisation dans la classe FundServiceProvider
:
<?php
// addons/fund/src/FundServiceProvider.php
namespace App\Addons\Fund;
use \App\Extensions\BaseAddonServiceProvider;
class FundServiceProvider extends BaseAddonServiceProvider
{
protected string $uuid = 'fund';
public function register()
{
//
}
public function boot()
{
$this->loadMigrations();
}
}
La fonction loadMigrations()
assure que les migrations spécifiques à l'extension seront prises en compte par le CMS lors de l'exécution des commandes de migration.
Créer une migration pour une extension
Pour créer une nouvelle migration pour une extension, vous pouvez utiliser la commande suivante :
php artisan clientxcms:create-migration-extension
Cette commande vous demandera :
- Le nom de la migration.
- Le dossier de migration où la migration sera créée (logiquement, votre dossier).
Une fois les informations fournies, la migration sera automatiquement générée et prête à être modifiée selon vos besoins.
Exécuter les migrations pour une extension
Après avoir créé vos migrations, vous pouvez les exécuter en utilisant la commande suivante :
php artisan clientxcms:db-extension
Cette commande vous permettra de sélectionner l'extension pour laquelle vous souhaitez appliquer les migrations. Si vous souhaitez appliquer les migrations pour toutes les extensions à la fois, vous pouvez ajouter l'option --all
:
php artisan clientxcms:db-extension --all
Seeder
Vous pouvez également créer des seeders pour votre extension. Pour cela, vous pouvez utiliser la méthode addSeeders()
dans le fichier ServiceProvider
de l'extension. Voici un exemple de l'utilisation dans la classe FundServiceProvider
:
<?php
// addons/fund/src/FundServiceProvider.php
namespace App\Addons\Fund;
use \App\Extensions\BaseAddonServiceProvider;
use App\Addons\Fund\Database\Seeders\FundSeeder;
use App\Addons\Fund\Database\Seeders\FundSeeder2;
class FundServiceProvider extends BaseAddonServiceProvider
{
protected string $uuid = 'fund';
public function register()
{
//
}
public function boot()
{
$this->loadMigrations();
$this->addSeeder(FundSeeder::class);
// or
$this->addSeeders([FundSeeder::class, FundSeeder2::class]);
// si vous voulez uniquement en local
if (config('app.env') === 'local') {
$this->addSeeder(FundSeeder::class);
}
}
}
puis vous pouvez créer votre seeder comme ceci :
<?php
// addons/fund/database/seeders/FundSeeder.php
namespace App\Addons\Fund\Database\Seeders;
use Illuminate\Database\Seeder;
class FundSeeder extends Seeder
{
public function run()
{
// Code
}
}
et enfin, vous pouvez exécuter les seeders pour une extension en utilisant la commande suivante :
php artisan db:seed --class=App\Addons\Fund\Database\Seeders\FundSeeder
ou pour tous les seeders :
php artisan db:seed