Cómo encontrar elementos duplicados en colecciones de Laravel

  • Publicado el 29 enero, 2025
  • Palabras: 63

¿Necesitas encontrar elementos duplicados en tu colección? Los métodos "duplicates" de Laravel ofrecen una forma sencilla de encontrar valores repetidos, ya sean tipos simples o atributos anidados.

Cómo encontrar elementos duplicados en colecciones de Laravel

#Uso básico

El método duplicates recupera y devuelve valores duplicados de la colección:

 

// Regular duplicate checking
$collection = collect(['a', 'b', 'A', 'a', 'B', 'b']);
$duplicates = $collection->duplicates();      
// Result: [3 => 'a', 5 => 'b'] // Case-insensitive

// Strict duplicate checking
$strictDuplicates = $collection->duplicatesStrict();
// Result: [3 => 'a', 5 => 'b'] // Case-sensitive

 

#Trabajar con arrays y objetos

Compruebe si hay duplicados en atributos específicos:

 

$employees = collect([
    ['email' => 'abigail@example.com', 'position' => 'Developer'],
    ['email' => 'james@example.com', 'position' => 'Designer'],
    ['email' => 'victoria@example.com', 'position' => 'Developer']
]);

$duplicatePositions = $employees->duplicates('position');
// Result: [2 => 'Developer']

 

#Ejemplo práctico

A continuación se explica cómo podría usarlo en un servicio de validación de datos:

 

class DataValidator
{
    public function validateUniqueEmails(Collection $users)
    {
        // Regular duplicate check for emails
        $duplicates = $users->duplicates('email');
        
        if ($duplicates->isNotEmpty()) {
            throw new ValidationException(
                "Duplicate emails found: " . 
                $duplicates->implode(', ')
            );
        }
    }

    public function findDuplicateTags(Collection $tags)
    {
        return [
            'case_insensitive' => $tags->duplicates(),
            'case_sensitive' => $tags->duplicatesStrict()
        ];
    }

    public function checkUniqueTags(Collection $posts)
    {
        $tags = collect([
            'php', 'PHP', 'php', 'laravel', 'Laravel', 'LARAVEL'
        ]);

        return [
            'basic_duplicates' => $tags->duplicates(),
            // Result: [2 => 'php', 4 => 'Laravel']
            
            'case_sensitive_duplicates' => $tags->duplicatesStrict(),
            // Result: [2 => 'php']
        ];
    }
}

 

Los métodos duplicados facilitan la identificación de valores repetidos en sus colecciones, lo que ayuda a garantizar la integridad y la validación de los datos.

Antonio Jenaro

Desarrollador backend especializado en PHP y Laravel, con sede en Santander, Cantabria. Más de 15 años de experiencia en el desarrollo de aplicaciones web a medida y en la modernización de código heredado.

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

Mejorando el manejo de peticiones de entradas en Laravel con colecciones
125

Mejorando el manejo de peticiones de entradas en Laravel con colecciones

Personalización de colecciones en Laravel: conozca el atributo CollectedBy
117

Personalización de colecciones en Laravel: conozca el atributo CollectedBy

Cómo organizar colecciones con el método splitIn de Laravel
200

Cómo organizar colecciones con el método splitIn de Laravel

Conversión de valores en colecciones con el método wrap de Laravel
640

Conversión de valores en colecciones con el método wrap de Laravel

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión