如何在一个查询中获取关系字段数据

时间:2015-07-03 12:04:19

标签: wordpress podscms

我希望优化网站的速度,并在一个查询中获取所有数据,包括我的关系(选择)字段数据。怎么做?

目前为止我的调查结果如下:

我注意到在执行$pod->field('relational_field');时会运行其他查询。

假设一个包含名称字段类别字段关系(选择):

// This code below will behave unexpected 
$pod = pods( 'pod', array(
   'where' => array(...),
   'select' => array('t.name', 'category.name AS category_name')
));

假设您已创建链接到两个类别的一个Pod项目,您将获得两个结果,因为select选项中的category.name AS category_name。如果您为pod分配了一个类别,则会得到一个结果。

结果如下:

array (size=2)
  0 => 
    object(stdClass)[2928]
      public 'name' => string 'My pod 1' (length=8)
      public 'category' => string 'Category 1' (length=10)
  1 => 
    object(stdClass)[2929]
      public 'name' => string 'My pod 1' (length=8)
      public 'category' => string 'Category 2' (length=10) // <-- The difference is only in category

我真正想要的是该类别中的两个类别的数据&#39;键作为数组。这可能吗?

(最初发布于Pods.io

1 个答案:

答案 0 :(得分:1)

这很接近。选择&#39;参数应该是您提供给SQL SELECT子句的字符串,而不是字段数组。与&#39;在哪里&#39;相同参数,所以:

$pod = pods( 'pod', array(
   'where' => 'where params as a string',
   'select' => 't.name,category.name AS category_name')
));

使用field()display()检索数据时,请使用别名&#39; category_name&#39;而不是点符号。