2011-12-15 25 views
38

Perché l'entità FOSUserBundle User ha due proprietà per un nome utente (e altri campi)?FOSUserBundle: username vs usernameCanonical

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

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

Ho letto la documentazione, dato un'occhiata al codice sorgente, e ha cercato di cercare informazioni, e non riesco a scoprire perché esiste. Sembra memorizzare sempre gli stessi valori. Sono sicuro che c'è una buona ragione, qualcuno può riempirmi?

risposta

59

campi canoniche vengono in minuscolo prima del confronto o la ricerca - per assicurarsi che non vi siano duplicati con lo stesso valore, ma con il caso di diverso, come [email protected] e [email protected].

+0

Ma se le regole di confronto della tabella sono impostate su un valore senza distinzione tra maiuscole e minuscole (come 'utf8_unicode_ci'), è davvero importante? – pikachu0

+0

@ pikachu0, non tutti gli RDBMS sono case-insensitive. Ad esempio, PostgreSQL - l'RDBMS che utilizzo - è sensibile al maiuscolo/minuscolo per impostazione predefinita. –

+0

Sì, è per questo che ho detto * se * era insensibile al maiuscolo/minuscolo. :) – pikachu0

Problemi correlati