我在Yii中使用CGridView,其中包含来自其他模型的一些关系的结果
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->search(),
'filter' => $model,
'columns' => array(
array(
'name' => 'user.name',
'header' => Yii::t('app', 'User'),
'value' => '!isset($data->user->name) ? Yii::t("app", "Unknown user") : $data->user->name',
'type' => 'raw',
'filter' => CHtml::activeTextField($model, 'keyName'),
),
array(
'name' => 'visitor.company',
'header' => Yii::t('app', 'Company'),
'value' => 'isset($data->visit->visitor->company) ? $data->visit->visitor->company : (isset($data->rfid->rfid) ? Yii::t("app", "Company 1") : Yii::t("app", "Unknown company"))',
'type' => 'raw',
'filter' => CHtml::activeTextField($model, 'visitorCompany'),
),
array(
'name' => 'pass_id',
'header' => Yii::t('app', 'Pass'),
'value' => '!isset($data->pass_id) ? Yii::t("app", "Massing pass") : "<span class=\"label label-primary\">" . $data->pass_id . "</span>"',
'type' => 'raw',
),
),
)); ?>
并且有isset()
条件检查是否存在关系(否则会发生错误)
但现在我正在寻找一种方法来过滤那些结果。例如,在过滤器中写入“未知”以在其他表或“公司”中获得没有关系的结果,以获得那些没有某种关系但具有另一个现有关系的结果