2011-12-15 18 views
38

Dlaczego jednostka użytkownika FOSUserBundle ma dwie właściwości dla nazwy użytkownika (i innych pól)?FOSUserBundle: username vs usernameCanonical

/** 
* @var string 
*/ 
protected $username; 

/** 
* @var string 
*/ 
protected $usernameCanonical; 

Czytałem dokumentację, przeglądałem kod źródłowy i próbowałem wyszukiwać informacje, nie mogłem też ustalić, dlaczego tak jest. Wydaje się, że zawsze przechowują te same wartości. Jestem pewien, że istnieje dobry powód, czy ktoś może mnie wypełnić?

Odpowiedz

59

Pola kanoniczne są pisane małymi literami przed porównaniem lub wyszukiwaniem - aby upewnić się, że nie ma duplikatów o tej samej wartości, ale z różnymi przypadkami, takimi jak [email protected] i [email protected].

+0

Ale jeśli sortowanie tabeli jest ustawione na wartość niewrażliwą na wielkość liter (np. 'Utf8_unicode_ci'), czy to naprawdę ma znaczenie? – pikachu0

+0

@ pikachu0, nie wszystkie RDBMS nie rozróżniają wielkości liter. Na przykład PostgreSQL - używany przez RDBMS - domyślnie rozróżnia wielkość liter. –

+0

Tak, dlatego powiedziałem * jeśli * nie było w nim rozróżniania wielkości liter. :) – pikachu0

Powiązane problemy