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
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Artículos relacionados

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

Mejorando el manejo de peticiones de entradas en Laravel con colecciones

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

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

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

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

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

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