0

我的问题与 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

  1. 从 Bands Pod 中获取具有相关乐队 ID 的乐队,
  2. 从 band pod 记录字段中收集所有记录的 id,
  3. 为 Records Pod 编写参数
  4. 使用 where 语句中的 id 来检查它们是否与 t.id 匹配,
  5. $pods->find(); //其中 $pods=pods('records');

提前感谢您花时间阅读本文以及您可能提供的任何答案。

干杯,乔

注意我知道 filters() 函数,它并没有做我所追求的。我想要专门针对 where 语句的东西。

4

1 回答 1

0

你会想要:

'where' => 'bands.id IN ( 1, 2 )'

如果您的乐队是自定义帖子类型,它将是:

'where' => 'bands.ID IN ( 1, 2 )'
于 2013-04-02T16:20:46.423 回答