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.

#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.
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