wangerting1988 2012-03-19 15:38:53 4272次浏览 5条回复 0 0 0
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,
		),
	));

我这样有问题,但是我不知到原因出在哪里?大侠们指点一下吧!

  • 回复于 2012-03-19 15:42 举报

    有什么提示?

  • 回复于 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是有值的

  • 回复于 2012-03-19 20:09 举报

    $id_danping_category值是多少啊?

  • 回复于 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中显示了,但是过滤功能没有了,我正在找解决的方法。

  • 回复于 2012-03-20 11:34 举报

    你参考admin里面的解决办法啊
    很方便的添加过滤

您需要登录后才可以回复。登录 | 立即注册