2016-03-06 102 views
0

商业模式:Yii按关系排列HAS_MANY

一张发票可以有多个状态(草稿,进行中,发送,删除)。

在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) 
  1. 发票名称+第一状态
  2. 发票名称2 +第一状态

(BY DESC)

  1. 发票名称+最后的状态
  2. 发票名称2 +最后的状态

我希望得到:

(BY ASC)

  1. 发票名称+ A状态
  2. 发票名称2 + B状态

(BY DESC)

  1. 发票名称2 + B状态
  2. 发票名称1 + A状态

意思,我想订购的所有记录,不仅地位,并始终显示上次的状态

回答