查询“store”类型的所有条目,其在字段“category”中具有指向contentful中特定“id”的链接

时间:2017-05-16 17:09:51

标签: php contentful

我想查询“类别”字段“商店”类型的所有条目至少一个具有特定“id”的链接,我怎样才能做到这一点?

我试过了:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR', $id );
$page = $client->getEntries($query);

“store”中的链接结构如下:

["categories"]=>
object(stdClass)#49 (1) {
  ["pt-BR"]=>
  array(1) {
    [0]=>
    object(stdClass)#52 (1) {
      ["sys"]=>
      object(stdClass)#55 (3) {
        ["type"]=>
        string(4) "Link"
        ["linkType"]=>
        string(5) "Entry"
        ["id"]=>
        string(22) "5LuXxFE2eQoqOY0yQO2iQ4"
      }
    }
  }
}

“类别”本身看起来像:

["category"]=>
  object(stdClass)#49 (1) {
    ["pt-BR"]=>
    array(1) {
      [0]=>
      object(stdClass)#46 (1) {
        ["sys"]=>
        object(stdClass)#47 (3) {
          ["type"]=>
          string(4) "Link"
          ["linkType"]=>
          string(5) "Entry"
          ["id"]=>
          string(22) "5LuXxFE2eQoqOY0yQO2iQ4"
        }
      }
    }
  }

但没效果。

1 个答案:

答案 0 :(得分:1)

你应该可以这样做:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.sys.id', $id );
$page = $client->getEntries($query);

或可能:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR.sys.id', $id );
$page = $client->getEntries($query);

如果您希望专门针对pt-BR区域设置。

如果您需要为返回的条目数添加限制,您只需附加:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR.sys.id', $id)->setLimit(5);
$page = $client->getEntries($query);

如果您希望以可预测的顺序返回项目,您还需要向查询添加订单。

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR.sys.id', $id)->setLimit(5)->orderBy('sys.createdAt');
$page = $client->getEntries($query);

如果您的category字段是值列表,则可以使用in选择器,如下所示:

$query = new \Contentful\Delivery\Query;
$query->setContentType('store')->where('fields.category.pt-BR.sys.id', [$id], 'in')->setLimit(5)->orderBy('sys.createdAt');
$page = $client->getEntries($query);

有关更多信息,请参阅:https://www.contentful.com/developers/docs/references/content-delivery-api/#/reference/search-parameters/search-on-references

您还可以通过访问:

轻松检查浏览器中查询的实际JSON响应

http://cdn.contentful.com/spaces/YOURSPACEID/entries/?access_token=YOURACCESSTOKEN&content_type=YOURCONTENTTYPEID&fields.category.sys.id=5LuXxFE2eQoqOY0yQO2iQ4