Создаение реляционного запроса с отношением MANY TO MANY без получения данных связанной таблицы
Здравствуйте. Для упрощения есть следующие таблицы:
tbl_goods: goods_id, title, description,...
tbl_types: types_id, title
tbl_goods_types: goods_id, types_id
Есть след.: модели: Goods, Types, GoodsTypes.
Для этих моделей установлены след. отношения:
class Goods extends CActiveRecord{
public function relations()
{
return array(
'GoodsTypes' => array(self::HAS_MANY, 'GoodsTypes', 'goods_id'),
'types' => array(self::MANY_MANY, 'Types', 'tbl_goods_types(goods_id, types_id)'),
);
}
}
class Types extends CActiveRecord{
public function relations(){
return array(
'GoodsTypes' => array(self::HAS_MANY, 'GoodsTypes', 'types_id'),
'goods' => array(self::MANY_MANY, 'Goods', 'tbl_goods_types(goods_id, types_id)'),
);
}
}
class GoodsTypes extends CActiveRecord{
public function relations(){
return array(
'goods' => array(self::BELONGS_TO, 'Goods', 'goods_id'),
'types' => array(self::BELONGS_TO, 'Types', 'types_id'),
);
}
}
Мне нужно выбрать все записи из таблицы tbl_goods (модели Goods), где tbl_types.types_id = $id (получаемый методом GET айдишник), но при этом данные из таблицы tbl_types не нужны.
При этом я делаю след.:
$criteria = new CDbCriteria;
$criteria->with = array(
'types'=>array(
'select'=>false,
'joinType'=>'INNER JOIN',
'condition'=>'types.types_id=:id',
'params'=>array(':id'=>$id),
),
);
$dataProvider = new CActiveDataProvider('Goods', array(
'pagination'=>array(
'pageSize'=>12,
),
'criteria'=>$criteria,
));
$data = $dataProvider->getData();
Данные в $data приходят не корректные. Где ошибка? Как решить эту проблему?
Заранее спасибо за помощь.
Источник: Stack Overflow на русском