商业模式:
一张发票可以有多种状态(草稿,进行中,发送,删除)。
在CGridView中,我想要显示最后状态的发票
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'carriage-grid',
'dataProvider'=>$model->search(array(
'completed'=>true,
'pagination'=>true,
)),
'filter'=>$model,
'columns'=> [
array(
'name'=>'InvoiceName',
'type'=>'raw',
'value'=>$model->InvoiceName,
),
array(
'name' => 'InvoiceStatus',
'value' => $model->InvoiceStatus->Name,
),
]
)); ?>
在发票模型中,我声明了关系:
'status'=>array(self::HAS_MANY, 'InvoiceStatus', 'invoice_id'),
在CGridView中显示的数据是正确的,但是当我尝试按InvoiceStatus->name
我得到了什么:
(BY ASC)
(BY DESC)
我期望获得:
(BY ASC)
(BY DESC)
这意味着,我想要订购所有记录不仅状态,并始终显示最后状态
答案 0 :(得分:1)
我认为您必须实施"自定义排序"去做这个。有关详细信息,请参阅http://www.yiiframework.com/wiki/590/sort-and-filter-a-custom-or-composite-cgridview-column-that-may-even-contain-data-from-different-tables/。