master

laravel/framework

Last updated at: 29/12/2023 09:22

InstallCommand.php

TLDR

This file contains the InstallCommand class, which is responsible for creating the migration repository.

Classes

InstallCommand

The InstallCommand class extends the Command class and is used to create the migration repository. It has the following properties and methods:

  • Properties:

    • $name: Represents the console command name. It is set to 'migrate:install'.
    • $description: Represents the console command description. It is set to 'Create the migration repository'.
    • $repository: Represents the migration repository instance of type MigrationRepositoryInterface.
  • Methods:

    • __construct(MigrationRepositoryInterface $repository): Constructor method that initializes the $repository property.
    • handle(): Executes the console command. It sets the source of the repository and creates the migration repository using the createRepository() method of the repository instance. Finally, it displays a success message using the info() method of the $components property.
    • getOptions(): Retrieves the console command options. In this case, it returns an array with a single option database, which is of type InputOption::VALUE_OPTIONAL.
<?php

namespace Illuminate\Database\Console\Migrations;

use Illuminate\Console\Command;
use Illuminate\Database\Migrations\MigrationRepositoryInterface;
use Symfony\Component\Console\Input\InputOption;

class InstallCommand extends Command
{
    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'migrate:install';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create the migration repository';

    /**
     * The repository instance.
     *
     * @var \Illuminate\Database\Migrations\MigrationRepositoryInterface
     */
    protected $repository;

    /**
     * Create a new migration install command instance.
     *
     * @param  \Illuminate\Database\Migrations\MigrationRepositoryInterface  $repository
     * @return void
     */
    public function __construct(MigrationRepositoryInterface $repository)
    {
        parent::__construct();

        $this->repository = $repository;
    }

    /**
     * Execute the console command.
     *
     * @return void
     */
    public function handle()
    {
        $this->repository->setSource($this->input->getOption('database'));

        $this->repository->createRepository();

        $this->components->info('Migration table created successfully.');
    }

    /**
     * Get the console command options.
     *
     * @return array
     */
    protected function getOptions()
    {
        return [
            ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use'],
        ];
    }
}