i have this issue with CActiveDataProvider.
.
I an ActiveRecord ProductTypes and it has the following relations
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(
'category' => array(self::BELONGS_TO, 'ProductCategories', 'CategoryID'),
'typeproducts' => array(self::HAS_MANY, 'Products', 'TypeID','condition' => 'typeproducts.Display = 1'),
);
}
i have the following relational active record and it works like a charm
$Criteria = new CDbCriteria();
$Criteria->with = "typeproducts";
$Criteria->condition = "t.CategoryID = :CategoryID and typeproducts.SupplierID = :SupplierID";
$Criteria->params = array(":CategoryID" => "12", ":SupplierID" => "2");
$types = ProductTypes::model()->findAll($Criteria);
and it generates the following query, which is the one i want
system.db.CDbCommand
Querying SQL: SELECT t.TypeID AS t0_c0, t.CategoryID AS t0_c1,
t.Title AS t0_c2, t.Intro AS t0_c3, t.Body AS t0_c4,
t.Image AS t0_c5, t.Thumb AS t0_c6, t.SortOrder AS t0_c7,
t.Display AS t0_c8, typeproducts.ProductID AS t1_c0,
typeproducts.TypeID AS t1_c1, typeproducts.CategoryID AS t1_c2,
typeproducts.SupplierID AS t1_c3, typeproducts.Title AS t1_c4,
typeproducts.Intro AS t1_c5, typeproducts.Body AS t1_c6,
typeproducts.Thumb AS t1_c7, typeproducts.Image AS t1_c8,
typeproducts.FeaturedProduct AS t1_c9,
typeproducts.FeaturedProductText AS t1_c10,
typeproducts.SortOrder AS t1_c11, typeproducts.Display AS
t1_c12 FROM producttypes t LEFT OUTER JOIN products typeproducts
ON (typeproducts.TypeID=t.TypeID) WHERE (t.CategoryID = :CategoryID
and typeproducts.SupplierID = :SupplierID) AND (typeproducts.Display = 1)
[color="#FF0000"]Now when i get the above $Criteria and assign it to my CActiveDataProvider.[/color]
$dataProvider=new CActiveDataProvider('ProductTypes', array(
'criteria'=>$Criteria
));
i get the following error
[color="#FF0000"]CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘typeproducts.SupplierID’ in ‘where clause’[/color]
I dont understand why it does not recognise my column. it seems to work fine with the findAll() command.
I am not sure if this is a bug or i am doing something wrong.
thanks in advance