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.
                #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.
    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.
Fuente: Harris Raftopoulos
Artículos relacionados
Inicia la conversación
Hazte miembro de Antonio Jenaro para comenzar a comentar.
Regístrate ahora¿Ya estás registrado? Inicia sesión