2つのテーブルからデータを選択し、そのデータをページ分割されたグリッドビューに表示しようとしています。問題は、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フィールドでグループ化することです。とにかく、like
ステートメントで検索するwhere条件があるため、これを行うことはできません。
ありがとうございました
編集:
これが私のアクションコードです:
$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)
));