私の質問は、ワードプレス サイトのポッド フレームワーク プラグインに関するものです。Pod バージョン 2.2 を使用していますが、find() 関数の where パラメータに問題があります。
私がこの問題に遭遇した最初の人である場合、私は驚いていますが、広範囲に検索しましたが、答えを提供する人 (またはその質問) を見つけられませんでした。
とにかく、私の問題を強調するために例を挙げます。
Bands Pod と Records Pod があり、これら 2 つの Pod の間に双方向の複数選択関係 (つまり、n 対 n の関係) があるとします。したがって、バンドは多数のレコードを持つことができ、レコードは複数のバンドを持つことができます。さらに、フィールド BandsPod('records') と RecordsPod('bands') の間には関係があります。
これで、レコード ポッド内のすべてのレコードを次のように取得できます (コメント アウトされている場所に注意してください)。
$pods = pods('records');
$params = array(
'select' => 't.*',
'limit' => -1
//,'where' => '???'
);
$pods->find($params);
次に、template()、fetch() など、好きなことをします。
帯域でフィルタリングしたいときに問題が発生します。ID 1 のバンドごとにすべてのレコードを取得したい場合、where ステートメントはどうすればよいですか?
私の見解では、それは次のようなものであるべきです。
$params = array(
'select' => 't.*',
'limit' => -1,
'where' => '1 IN bands.id'
);
$pods->find($params);
ただし、これは機能しません (特に期待していたわけではありません)。
これが複数の帯域によるフィルタリングでどのように機能するかを知ることも望ましいでしょう。例えば
'where' => '(1, 2) IN bands.id'
前に言ったように、私はこれを機能させるためにしばらくの間、ほとんど喜びを感じずに努力してきました。私はそれを機能させることができましたが、非常に醜い方法でした。いえ
- 関連するバンド ID を使用して Bands Pod からバンドを取得し、
- バンド ポッド レコード フィールドからレコードのすべての ID を収集し、
- Records Pod の書き込みパラメーター
- where ステートメントで ID を使用して、t.id と一致することを確認します。
- $pods->find(); //where $pods=pods('records');
時間を割いてこれを読んでいただき、ご回答いただきありがとうございます。
乾杯、ジョー
NB Filters() 関数については知っていますが、私が望んでいることはしません。whereステートメント専用のものをお願いします。