Manejo de múltiples valores en comandos Artisan de Laravel

  • Publicado el 16 diciembre, 2024
  • Palabras: 78

¿Necesitas aceptar múltiples valores en tus comandos Artisan? ¡La sintaxis de array de Laravel lo hace simple! Exploremos cómo manejar múltiples argumentos y opciones en tus comandos.

Manejo de múltiples valores en comandos Artisan de Laravel

#Múltiples argumentos

Para argumentos que aceptan múltiples valores, utilice el carácter *:

 

protected $signature = 'mail:send {user*}';

 

Esto permite el uso de comandos como

 

php artisan mail:send 1 2 3

 

#Argumentos múltiples opcionales

Para que varios argumentos sean opcionales puede combinar ? y *

 

protected $signature = 'mail:send {user?*}';

 

#Valores con múltiples opciones

Para opciones que acepten múltiples valores:

 

protected $signature = 'mail:send {--id=*}';

 

Ejemplo de uso:

 

php artisan mail:send --id=1 --id=2 --id=3

 

#Ejemplo práctico

A continuación se muestra un ejemplo práctico para gestionar roles de usuario:

 

class AssignUserRoles extends Command
{
    protected $signature = 'users:assign-roles 
        {users*: User IDs to update}
        {--R|role=*: Roles to assign}
        {--team=*: Team IDs to scope roles to}';

    public function handle()
    {
        $userIds = $this->argument('users');
        $roles = $this->option('role');
        $teams = $this->option('team');

        $this->info("Assigning roles to " . count($userIds) . " users...");

        foreach ($userIds as $userId) {
            $user = User::findOrFail($userId);
            
            foreach ($roles as $role) {
                if ($teams) {
                    foreach ($teams as $teamId) {
                        $user->assignRole($role, Team::find($teamId));
                        $this->info("Assigned {$role} to User {$userId} in Team {$teamId}");
                    }
                } else {
                    $user->assignRole($role);
                    $this->info("Assigned {$role} to User {$userId}");
                }
            }
        }
    }
}

 

Ejemplos de uso:

 

# Asignar multiples roles a multiples usuarios
php artisan users:assign-roles 1 2 3 --role=editor --role=writer

# Asignar roles en equipos específicos
php artisan users:assign-roles 1 2 --role=editor --team=5 --team=6

 

La compatibilidad con múltiples valores hace que sus comandos sean más flexibles y potentes, perfectos para operaciones por lotes.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión