使用pods框架查找记录时如何在where参数中使用关系?

时间:2013-04-02 15:53:37

标签: php mysql wordpress podscms

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

然而,这不起作用(不是我特别期望的)。

还需要知道这对于多个波段的滤波是如何工作的。 E.g。

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

正如我之前所说,我一直试图让这个工作一段时间,并且没有什么快乐。我已经设法让它工作但是非常难看。即。

  1. 从Bands Pod获得带有相关乐队ID的乐队,
  2. 从乐队pod记录字段
  3. 中收集所有记录ID
  4. 为Records Pod撰写参数
  5. 使用where语句中的id来检查它们是否与t.id,
  6. 匹配
  7. $ pods->发现(); //其中$ pods = pods('records');
  8. 提前感谢您花时间阅读本文以及您可能给出的任何答案。

    干杯, 乔

    N.B。我知道filters()函数,它不会做我想要的。我喜欢那些专门针对where声明的东西。

1 个答案:

答案 0 :(得分:0)

你想要:

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

如果你的乐队是自定义帖子类型,那就是:

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