Hi,
I have 2 models: Product and Attribute. Each Product can have many Attribute. I define a new property for Product attributeIds where i want to get all attributes’ id separated by comma (ex: if product x has 5 attributes (id from 1 to 5) the attributeIds property must be filled with the string “1,2,3,4,5”).
To solve my problem , I defined a scope but when i use it into a CGridView it throw me the error "Invalid parameter number: number of bound variables does not match number of tokens. " when he tries to execute the count. (the parameter added by me is not present into the count query)
// Product model
class Product {
public $attributeIds;
...........
function getAttrIds($limit = 3) {
$criteria = array(
'select' => '(select group_concat(id) from '.Attribute::model()->tableName().' where t.id = attribute.product_id limit :limit) as attributeIds',
'params' => array(':limit'=>$limit),
);
$this->getDbCriteria()->mergeWith($criteria);
return $this;
}
.............
}
// call
$this->widget('zii.widgets.grid.CGridView', array(
'id'=>'product-combination-grid',
'dataProvider'=>$model->getAttrIds($params)->search(),
.........................
));
Does anyone know how to attach a parameterized subquery to an ActiveRecord ?
Thanks.