次のようなテーブルから生成されたブール値を持つモデルがあります。
CREATE TABLE receivable (
...
is_paid INTEGER DEFAULT NULL,
...
)
NULL 値の可能性だけに注意してください。
次のように、gii で生成された Receivable.php-model と単純な CGridView があります。
$dataProvider = $model->search();
$dataProvider->pagination = ['pageSize'=>20];
$this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$dataProvider,
'filter'=>$model,
'columns'=>array(
'id',
[
'name'=>'is_paid',
'type'=>'raw',
'value'=>'($data->is_paid==1)?"PAID":"";',
'filter'=>['1'=>'PAID', '0'=>'0']
],
'someothercolumn',
['class'=>'CButtonColumn']
),
);
これまでのところ、それは理にかなっているはずですか?それはうまく機能しますが、小さな問題が 1 つだけあります。null 値のフィルタリングも許可したいのです。
'filter'=>['1'=>'PAID', '0'=>'0', null=>'null'] // This shows all records.
'filter'=>['1'=>'PAID', '0'=>'0', ''=>'null'] // This also shows all records.
'filter'=>['1'=>'PAID', '<>1'=>'null or zero'] // This shows 0-records only.
さて、今私は途方に暮れています。CDataColumn.filter を使用して、ユーザーが null 値をフィルタリングできるようにする方法はありますか? ('is_paid'==null の行のみを表示)
編集:値は 1,0 または NULL にすることができますが、フィルターは 1 または 0 (またはすべてを表示) にのみ適用できます。ユーザーに null 値のみの行を表示させるにはどうすればよいですか?
どんな助けでも大歓迎です!