我有一个带有布尔值的模型,它是从这样的表生成的:
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']
),
);
到目前为止应该有意义吗?我必须说它确实工作得很好,只有一个小问题 - 我也想允许过滤空值!
'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 来允许用户过滤空值?(仅显示 'is_paid'==null 的行)
编辑:值可以是 1,0 或 NULL,但过滤器只能应用于 1 或 0(或显示所有内容)。如何让用户仅显示具有空值的行?
任何帮助深表感谢!