我的问题与 wordpress 网站的 pods 框架插件有关。我正在使用 pods 2.2 版,并且在 find() 函数中的 where 参数遇到问题。
如果我是第一个遇到这个问题的人,我会感到惊讶,但我进行了广泛的搜索,但没有找到任何人提供答案(或那个问题)。
无论如何,我将举一个例子来突出我的问题。
假设我有一个 Bands Pod 和一个 Records Pod,这两个 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'
正如我之前所说,我一直在努力让它工作一段时间,但并没有什么快乐。我设法让它工作,但以一种非常丑陋的方式。IE
- 从 Bands Pod 中获取具有相关乐队 ID 的乐队,
- 从 band pod 记录字段中收集所有记录的 id,
- 为 Records Pod 编写参数
- 使用 where 语句中的 id 来检查它们是否与 t.id 匹配,
- $pods->find(); //其中 $pods=pods('records');
提前感谢您花时间阅读本文以及您可能提供的任何答案。
干杯,乔
注意我知道 filters() 函数,它并没有做我所追求的。我想要专门针对 where 语句的东西。