CActiveDataProvider的问题 [ 新手入门 ]
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(
'danpingproperty'=>array(self::HAS_MANY, 'DanpingProperty', 'id_danping_property'),
'categories'=>array(self::MANY_MANY, 'DanpingCategory', 'category_property(id_danping_property,id_danping_category)'),
);
}
$model=DanpingProperty::model()->findAll(array(
'with'=>'categories',
'condition'=>'categories.id_danping_category='.$id_danping_category
));
改成下面这样的代码
$dataProvider=new CActiveDataProvider('DanpingProperty', array(
'criteria'=>array(
'condition'=>'categories.id_danping_category=:id_danping_category',
'params'=> array(':id_danping_category'=>$id_danping_category),
'with'=>'categories',
'order'=>'id desc',
),
'pagination'=>array(
'pageSize'=>20,
),
));
我这样有问题,但是我不知到原因出在哪里?大侠们指点一下吧!
共 5 条回复
-
wangerting1988 回复于 2012-03-19 15:49 举报
报sql的错误,但是我没有写sql这是yii自己生成的。我把参数改成一个常量,sql就不是现在这样的了,也不是我要的sql。下面的这个才是我需要的sql
CDbCommand 无法执行 SQL 语句:SQLSTATE[42S22]: Column not found: 1054 Unknown column '$id_danping_category' in 'where clause'. The SQL statement executed was: SELECT COUNT(DISTINCT `t`.`id_danping_property`) FROM `danping_property` `t` LEFT OUTER JOIN `category_property` `categories_categories` ON (`t`.`id_danping_property`=`categories_categories`.`id_danping_property`) LEFT OUTER JOIN `danping_category` `categories` ON (`categories`.`id_danping_category`=`categories_categories`.`id_danping_category`) WHERE (categories.id_danping_category=$id_danping_category)
参数$id_danping_category是有值的
-
wangerting1988 回复于 2012-03-20 09:57 举报
谢谢,这个问题已经解决了。
$data=DanpingProperty::model()->findAll(array( 'with'=>'categories', 'condition'=>'categories.id_danping_category='.$id_danping_category )); //var_dump($model); $dataProvider=new CArrayDataProvider($data);
这样就可以在CGridView中显示了,但是过滤功能没有了,我正在找解决的方法。
wangerting1988 北京
注册时间:2011-08-10
最后登录:2014-06-09
在线时长:0小时20分
最后登录:2014-06-09
在线时长:0小时20分
- 粉丝4
- 金钱410
- 威望0
- 积分410