操作
Backport(バックポート) #1581
完了A community category is sorted not in order of column sort_order of table community_category but in order of ID. (コミュニティカテゴリがテーブルcommunity_categoryのカラムsort_orderではなく、ID順にソートされる)
開始日:
2010-08-25
期日:
進捗率:
100%
予定工数:
説明
Overview (現象)¶
2系から3系へアップデートのアップデート時に以下の操作を行うと、コミュニティカテゴリがテーブルcommunity_categoryのカラムsort_orderではなく、ID順にソートされる
前提 ・2.12のときに、コミュニティカテゴリのIDとsort_orderの並びが違う状態 (後から追加し、カテゴリ的には既存のものより上にしたいため) 結果 ・そのデータをupgrade する ・OpenPNE3で参照しているテーブルcommunity_categoryのカラムsort_order ではなく、ID順にソートされてプルダウンメニューに表示される
再現バージョン¶
- OpenPNE2.12 → 3.4.6
Causes (原因)¶
community_category テーブルからレコードを取得する際のSQLで、sort_order カラムを order by に指定していない。
また、管理画面でのソートに対応しておらず、
OpenPNE3 で追加したカテゴリのsort_order カラムの値が null になっています。
Way to fix (修正内容)¶
community_category を取得する際、随所で以下のようなコードとなっている。
Doctrine::getTable('CommunityCategory')->createQuery()->where('lft > 1');
where句の指定はすべて共通であるため、CommunityCategoryTable に getAllChildrenQuery() を追加して共通化し、
このメソッド内で「order by sort_order」を付加するように修正する。
この修正によってコミュニティ検索などのプルダウン選択ではソートが正しく機能するようになりますが、
管理画面ではソート順の反映は行われません。
報告元¶
http://sns.openpne.jp/diary/24997 から転載
2.12から3.4.6へアップデートした環境で、 前提 ・2.12のときに、コミュニティカテゴリのIDとsort_orderの並びが違う状態 (後から追加し、カテゴリ的には既存のものより上にしたいため) 結果 ・そのデータをupgrade する ・OpenPNE3で参照しているテーブルcommunity_categoryのカラムsort_order ではなく、ID順にソートされてプルダウンメニューに表示される
ファイル
操作