1

次のようなページ付けを使用したmysql呼び出しがあります。

$this->paginate['limit'] = 400;
$this->paginate['Word']= array('contain'=>"");
$wording = $this->paginate('Word');

結果は次のとおりです。

SELECT `Word`.`id`, `Word`.`special`, FROM `words` AS `Word` WHERE `Word`.`writing_translation_id` = 197 LIMIT 20

したがって、この20の制限はどこかから現れ、どこにあるのかわかりません。コントローラーとモデルを確認しましたが、何も見つかりませんでした。ご覧のとおり、400に設定された特定の制限で上書きすることはできませんでした。

問題はどこだ?

4

2 に答える 2

2

$ this-> paginate ['Word] = array(' contain'=>''、' limit'=> 400);を試してください。

于 2012-05-24T13:48:19.810 に答える
0

上記の答えは正しいですが、範囲は非常に限られています。戻り値が400を超えるとどうなりますか?値を999999999に設定しますか?これは悪いプログラミング慣行です。クエリの実行、データの操作、計算をナノ秒単位で実行できるマシンを使用しています。したがって、可能な限り極度の精度を発揮する必要があります。これは間違いなくそのようなケースの1つです。

この問題の非常に簡単な解決策は、「すべて表示」の要求が行われた場合(おそらく、$ _ GETパラメーターを介して渡された場合)、paginateクエリと同じ条件でクイック検索->('count')を実行することです。制限をこの値に設定します。

于 2014-01-30T17:22:46.570 に答える