1

次のようなテーブルから生成されたブール値を持つモデルがあります。

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 値のみの行を表示させるにはどうすればよいですか?

どんな助けでも大歓迎です!

4

1 に答える 1