Поиск в Yii по аргументу со связью MANY_MANY

В модели (Part) есть связь с другой моделью (CarModel) вида
'models'=>array(self::MANY_MANY, 'CarModel', 'part_to_model(p_id, m_id)')
какой метод использовать для CDbCriteria в этом случае?
или прокатит $criteria->compare('models.name', $this->model)?
В последней конструкции напрягает, что models вернет не один объект, а массив.
  • Вопрос задан
  • 3967 просмотров
Решения вопроса 1
EnChikiben
@EnChikiben
Я бы сделал поиск так:
$criteria->together=true;
$criteria->with=array('CarModel');
$criteria->compare('m_id',$this->m_id);

А вывел в CGridView,
<?php $this->widget('zii.widgets.grid.CGridView', array(
'dataProvider'=>$model->search(),
'filter'=>$model,
'columns'=>array(
...
array(
'name' => 'CarModel',
'filter'=> false,
'value' => ' $data->getCarModel ',
),

),
)); ?>

и дополнительный метод в модели, который массив значений модели свернет в стороку:
public function getCarModel($sSep = ', ') {
$aRes = array();

foreach ($this->CarModel as $itm) {

$aRes[] = $itm->name;
}

return implode($sSep, $aRes);
}

делал что то подобное в связке кино+жанры.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Gibbzy
@Gibbzy
Метод для чего? Что вы хотите сделать? Не очень понятен вопрос.
Там если вы хотите вытащить детали для определенной машины, то обычно я использую join.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы