我正在尝试从两个表中选择数据并在分页网格视图中显示该数据。问题是 Yii 正在使用 SQL 连接来连接数据(因为我告诉它这样做),因此它没有显示每页正确的项目数。
为了清楚起见,我从topics
和中选择messages_in_topics
,然后加入
$criteria->together = true;
这使得 MySQL 为每条消息(和相关主题)返回一行。例子:
id_topic topic id_messages message
1 topic1 1 message1_in_topic1
1 topic1 2 message2_in_topic1
1 topic1 3 message3_in_topic1
2 topic2 4 message1_in_topic2
2 topic2 5 message2_in_topic2
只有 2 个主题,但 Yii 的分页器认为有 5 个。
“解决”这个问题的最快方法是按 id_topic 字段分组,无论如何,我不能这样做,因为有一个 where 条件可以使用like
语句进行搜索。
谢谢
编辑:
这是我的操作代码:
$criteria = new CDbCriteria;
$get_s = Yii::app()->request->getQuery('s', '');
if( $get_s ){
$criteria->compare("topic_title", $get_s, true);
$criteria->compare("message_text", $get_s, true, 'OR');
}
$criteria->with = array('messages');
$criteria->addCondition(array( ...... )); <--- some rules like if the topic is validated...
$dataProvider = new CActiveDataProvider('Topics', array(
'criteria'=>$criteria,
'pagination=>array('pageSize'=>15)
));