Доброй ночи. Надеюсь на Вашу помощь.
Есть модель Order, у которой есть relation orderItems (HAS_MANY).
Во view делаю вывод данных модели Ордер, а ниже с помощью CGridView вывод данных всех связанных OrderItems.
Нужно сделать сортировку этих самых OrderItems по их полям, но чето никак не могу допереть как (уже 2-й час ночи).
Код такой:
class Order extends CActiveRecord{
...
public function rules()
{
return array(
...
array('id, status_id, updated_date, orderItems', 'safe', 'on'=>'search'),
);
}
...
public function relations()
{
return array(
'orderItems' => array(self::HAS_MANY, 'OrderItem', array('order_id'=>'id')),
);
}
...
public function search()
{
$criteria=new CDbCriteria;
$criteria->with = array('orderItems');
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'sort'=>array(
'attributes'=>array(
'orderItems'=>array(
'asc'=>'orderItems.prod_id',
'desc'=>'orderItems.prod_id DESC',
),
),
),
));
}
}
class OrderController extends Controller{
...
public function actionView($id)
{
$order=new Order('search');
$model=$order->with("orderItems")->findByPk($id);
$this->render('view',array(
'model'=>$model,
));
}
...
}
view.php:
...
$this->widget('bootstrap.widgets.TbDetailView', array(
'data'=>$model,
'attributes'=>array(
array('name'=>'id', 'label'=>'ID'),
array('name'=>'status.name', 'label'=>'Status'),
array('name'=>'updated_date', 'label'=>'Updated'),
array('name'=>'created_date', 'label'=>'Created'),
),
));
$columns = array(
array(
'name'=>'id',
'header'=>'Item ID',
'type'=>'raw',
),
array(
'name'=>'prod_id',
'header'=>'Product',
'type'=>'raw',
),
};
$dataProvider=new CActiveDataProvider('OrderItem', array('data'=>$model->orderItems));
$this->widget('bootstrap.widgets.TbGridView', array(
'dataProvider'=>$dataProvider,
'template'=>'{items}',
'emptyText'=>'',
'columns'=>$columns,
));
Линк сортировки в табличке получается вот такой: index.php?r=order/view&id=2&OrderItem_sort=prod_id&ajax=yw1
Но сортировать табличку никак не получаеться.
Помогите.