CakePHPとトリッキーなページネーション

CakePHPで最も苦痛のある場所は、ページネーションです。 特にトリックに関しては。 Banal-> find( 'all')は常にうまく(ほとんど常に)うまく機能しますが、ページネーション...
与えられた:

  1. 示された価格(Immovable.price)と通貨タイプ(Immovable.currency_id)の不動産(Immovable)のタブレットがあります。
  2. id、name、coeff(係数)のフィールドを持つ通貨ラベル(通貨)があります

したがって、通貨テー​​ブルには、係数EUR coeff = 1.34、通貨Euro coeff = 1.34があります。
チャレンジ:

通貨を含む価格で発行(ページ分割)を並べ替えます。 つまり 100,000ユーロの家は110,000ドルの家よりも高価です(1〜1.34のレート)
解決策

$this->paginate = array('order' => array('Count' => 'ASC'),
'fields' => array('*','((`Immovable`.`price`*`Currency`.`coeff`)) as Count'));


はい、二重括弧で囲まれています。 次に、LEFT JOINを通貨に設定し、計算フィールドで正しい並べ替えを行うことで、リクエストが正しくなります。

はい、他のデータベースで作業できなかったため、MySQLでテストしました。 私は誰かがこのスレッドを助けることを願っています:)


Source: https://habr.com/ru/post/J57946/


All Articles