Filtrare In Una Gridview Valori Booleani Compresi Valori Nulli

Salve ragazzi una domanda al volo.

Vorrei poter filtrare i valori NULL insieme ai false,

il mio Helper parsePublished, mi fa visualizzare già nella gridview

No, se il valore nel db è false oppure null, Si se è true.

Il filtro così impostato funziona solo per valori true e false, niente per i null

Nella gridview ho:




array(

	'name'=>'published',

	'type'=>'raw',

	'value'=>'Helpers::parsePublished($data->published)',

	'filter'=>array(1=>'Si',0=>'No')

),



nella funzione search() del model ho:




$criteria->compare('published',$this->published);



come faccio a filtrare i false insieme ai NULL?

Grazie a tutti.

[size=2]non funzionerebbe così?[/size]




array(

	'name'=>'published',

	'type'=>'raw',

	'value'=>'Helpers::parsePublished(is_null($data->published))',

	'filter'=>array(1=>'Si',0=>'No')

),



no altrimenti non avrei chiesto :) in questa maniera filtra i false e i true.

io vorrei filtrare con 0 i valori NULL e false.

Se il campo è booleano non dovresti aver il valore NULL.

Per avere una struttura coerente il campo dovrebbe essere NOT NULL e con valore di default impostato a 1 o a 0 (nel tuo caso 0).

In questo modo hai sempre e solo le due possibilità 1 o 0 e se non viene specificato il valore, in fase di inserimento, al posto di NULL avrai il valore di default che hai scelto (nel tuo caso 0).

Utilizzare i tipi di dato in maniera corretta aiuta molto a scrivere buon codice.

Ti serve che quei campi possano essere null? Te lo chiedo perché se non ti serve, puoi non lasciarli mai null e far si che questo problema non si manifesti mai.

si si questo lo so. io ho chiesto un’altra cosa, e se è possibile farla ;)

si mi serve che sia anche null

Una cosa tipo questa, un po’ grezza:




$criteria->compare('published', $this->published == 1 ? $this->published : 0);



cioè se è 1 passi il valore se non è uno passi sempre 0.

no purtroppo non va.