我有两个名为content
和category
的表格,其MANY_MANY
关系如下:
'contents'=>array(self::MANY_MANY, 'Content',
'content_category(category_id, content_id)',
'order'=>'contents.id DESC',
)
content_category是这两个表之间的中间表。所以我用这个关系来找到这样一个类别的内容:
$category = Category::model()->findByPk($cat_id);
foreach ($category->contents as $content)
{
//some code for each content
}
现在我想为content
表写出一些不相关的条件,为了这个关系找到一些内容。我的情况可能各不相同,并从$_GET
变量中获取。
我该怎么写我的病情
答案 0 :(得分:0)
您应该使用CDbCriteria来执行此操作。这是一个简单的例子:
$criteria = new CDbCriteria;
$criteria->select = 'the columns you need';
$criteria->limit = 5; // the number of row to fetch
$criteria->condition = 'column=:param OR column2="example"';
$criteria->params = array(':param' => $_GET['param'];//bind the param to the condition
//here I am going to add some conditions about the related model
$criteria->with = array(
'content' => array(
'select' => 'the columns you need in the related model',
'condition' => 'column=:param',
'params' => array(':param' => $_GET['param']),
),
);
$category = Category::model()->findAll($criteria);
阅读有关CDbCriteria的Yii文档以查找更多选项。 yii guide也有一些例子