Я новичок в yii и столкнулся со следующей проблемой. У меня есть две связанные таблицы, ClientTicket и Product со следующей структурой:
Клиентский билет
- id
- ticket_name
- ID клиента
- идантификационный номер продукта
Продукт
- id
- тип
- модель
- марка
Две таблицы связаны внешним ключом, который связывает ClientTicket.product_id с Product.id.
Проблема
В административном представлении ClientTicket мне удалось включить два столбца продукта (марка, модель) и отобразить окно поиска для каждого из них, но фильтрация не работает должным образом. Пример: когда я ищу в одном из двух полей поиска (марка, модель), другое автоматически заполняется тем же значением, которое я ввел (поэтому нет результатов поиска).
Модель ClientTicket:
public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'product' => array(self::BELONGS_TO, 'Product', 'product_id'),
........
);
}
public function search()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
...
$criteria->compare('product.model',$this->product_id, true);
$criteria->compare('product.brand',$this->product_id, true);
...
$criteria->with=array(..., 'product',);
$criteria->together= true;
return new CActiveDataProvider($this, array(
'criteria'=>$criteria,
'pagination' => array('pageSize' => 10),
));
}
Файл представления ClientTicket Admin:
<?php $this->widget('zii.widgets.grid.CGridView', array(
'id'=>'client-ticket-grid',
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
'ticket_number',
'ticket_date',
array('name'=>'agent_id',
'header'=> 'Agent',
'value'=> '$data->ticket_agent->name',
'filter'=>CHtml::listData(Agent::model()->findAll(), 'name', 'name'),
),
...
array('name'=>'product_id',
'header'=> 'Product',
'value'=> '$data->product->model',
),
array('name'=>'product_id',
'header'=> 'Brand',
'value'=>'$data->product->brand'
),