質問: $rows; return $query; } つまり、クエリは2回実行されます。1つはこのメソッドで、もう1つはjoomlaコアです。ページの読み込みが2倍長くなるため、このソリューションにはあまり満足していません。クエリには約10の結合があります...何百万もの行があるため、それは本当に問題です。正しい解決策はありますか?
回答: joomlaはgetitemsを使用してクエリを実行する必要があります。したがって、最善の策は、モデルの状態を変更して、すべての結果が確実に読み込まれるようにすることです。モデル内では、次のようにsetstateを使用してこれを行うことができます。$this->setstate('list.limit', 0); モデルがgetitemsを呼び出す前にそれを実行すると、すべてのアイテムが読み込まれます。これに関するいくつかの警告。 モデルの外でこれを行うこともできるので、たとえば、自分のビューにいた場合。次のことができます。 $ model = $ this-> getmodel(); $ model-> setstate( 'list.limit'、0); 場合によっては、モデルの状態が入力される前にこれを行うのが早すぎる可能性があります。これにより、制限を設定した後、基本的に制限をオーバーライドした後、モデルがユーザーの状態から再構築されます。 これを修正するには、最初にモデルにその状態を強制的に設定できます。$model = $this->getmodel(); $model->getstate(); $model->setstate('list.limit', 0); 実際のpopulatestateメソッドは保護されているため、モデルの外では直接呼び出すことはできませんが、getstateを呼び出すと、populatestateが呼び出されてから状態の現在の設定。