Actions
Backport(バックポート) #3081
closedactivity/community.json 実行時にDoctrineでエラーが発生する場合がある
Start date:
2012-05-10
Due date:
% Done:
100%
Estimated time:
Description
現象¶
activity/community.json 呼び出し時に下記のようなエラーがhttpdのエラーログに出力されて500エラーとなる。
SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
is_active: 0 のメンバー(仮登録中のメンバー)が1人以上いる場合に発生する。
原因¶
マイフレンドまで公開のアクティビティを取得するための条件の中で、is_active: 0 のメンバーを対象外とするためにサブクエリ内に member_id_to NOT IN ?
を追加していたが、この形式の DQL を Doctrine が正しくパースできず、最終的にパラメーター数が一致しない SQL とパラメーターの組が生成されていたためにエラーとなっていた。
inactiveIds が空の場合は opDoctrineQuery::andWhereIn() により ->andWhere('0 = 1');
に書き換えられるため問題が発生しない。
修正内容¶
問題箇所のクエリでは Member モデルを必ず leftJoin しているため、opActivateListener により is_active のチェックが自動的に追加される。
このクエリにおいて is_active: 0 のメンバーを除外するには Member に対する絞り込みのみで十分であるため、マイフレンドまで公開のアクティビティを抽出する部分からは is_active: 0 を除外する条件を冗長と判断し削除した。
Updated by Yuma Sakata over 12 years ago
- Target version changed from OpenPNE 3.8.1 to OpenPNE 3.8.x
3.8.2 以降で対応します。
Updated by Yuma Sakata over 12 years ago
- Target version changed from OpenPNE 3.8.x to OpenPNE 3.8.1
3.8.1 で対応します。
Updated by Rimpei Ogawa over 12 years ago
- Assignee set to Rimpei Ogawa
原因がはっきりしていないとのことだったので、調査から引き受けます。
Updated by Rimpei Ogawa over 12 years ago
- Status changed from New(新規) to Pending Review(レビュー待ち)
- % Done changed from 0 to 50
更新履歴 9e16f3e18af59095f2fc2dcd2be4a9c757439d2f で適用されました。
Updated by Yuya Watanabe over 12 years ago
- Status changed from Pending Review(レビュー待ち) to Pending Testing(テスト待ち)
- % Done changed from 50 to 70
Updated by 開 石切山 over 12 years ago
- Status changed from Pending Testing(テスト待ち) to Fixed(完了)
- % Done changed from 70 to 100
Actions