Недавно попросили сделать небольшие изменения, но на одном пункте запнулся. Забыл как это делается
Суть такова: Есть три модели: Number (номер маршрута), Partners (данные о покупателе), Order(заказ)
Код: Выделить всё
class Number extends CActiveRecord
{
...
public function rules()
{
return array(
array('id_paper, number, date, id_format, id_color', 'required'),
array('id, number, date', 'safe', 'on'=>'search'),
);
}
public function relations()
{
return array(
'orders' => array(self::HAS_MANY, 'Orders', 'number_id'),
);
}
...
}
Код: Выделить всё
class Orders extends CActiveRecord
{
public function rules()
{
return array(
array('number_id, date, partner_id', 'required'),
array(' number_id, date, partner_id', 'safe', 'on'=>'search'),
);
}
public function relations()
{
return array(
'number' => array(self::BELONGS_TO, 'Number', 'number_id'),
'partner' => array(self::BELONGS_TO, 'Partners', 'partner_id'),
);
}
Код: Выделить всё
class Partners extends CActiveRecord
{
public function rules()
{
return array(
array('title', 'required'),
array('id, title', 'safe', 'on'=>'search'),
);
}
public function relations()
{
return array(
'orders' => array(self::HAS_MANY, 'Orders', 'partner_id'),
);
}
Сортировка по любому полю модели Orders работает, а вот по полю partner.name никак не могу сделать.
Может кто сталкивался подобным?
Код контроллера (заремарины различные попытки - все неудачные):
Код: Выделить всё
public function actionOrder()
{
$dataProvider=new CActiveDataProvider('Orders', array(
'criteria'=>array(
'with'=>array('partner'),
'together'=>false,
'condition'=>'number_id =:number',
'params'=>array(':number'=>$id),
// 'order'=>'partner.name ASC',
),
'sort' => array(
'attributes' => array(
'partner' => array(
'asc' => 'partner.name ASC',
'desc' => 'partner.name DESC',
'default' => 'ASC',
),
),
'defaultOrder' => array(
'partner' => CSort::SORT_ASC,
)
),
));
$this->render('order',array(
'model'=>$model,
'dataProvider'=>$dataProvider,
));
}